Github Actions¶
Github Actions is a tool to automatically build your software through continuous deployment. Github Actions is nothing else than an command-line runner built which runs your own scripts inside Docker containers.
OctoPerf seamlessly integrates with Github Actions thanks to our Maven Plugin. You can run OctoPerf load tests as part of your software builds like:
- Run an existing scenario,
- Import and run a JMeter JMX stored in your git repository,
- Or even stop the build automatically whenever a threshold or SLA exceeds a certain criticality (Example:
WARNING
).
Setup¶
Prerequisites¶
In order to setup gitlab builds to run OctoPerf load tests, first you need:
Introduction¶
First, you need to:
- Create a Github account,
- Then create a new repository named
octoperf-github-actions
.
Next, you will need an OctoPerf Account. Now, let's setup a dummy project:
- Create a new project named
GitHub
in yourDefault
workspace, - Import the sample JMX. This should create an
httpbin.org
virtual user, - Create a Scenario named
Scenario
and configure the load settings for thehttpbin.org
user.
Now, it's time to save your API key for further use:
- Click in the top-right corner in OctoPerf UI and choose
Profile
in the menu, - Copy the API Key.
Let's setup the gitlab repository now.
Github Repository¶
Github Actions natively supports running Maven builds:
- First, clone the github repository on your local machine:
git clone git@gitlab.com:username/octoperf-github-actions.git
- Then, you should create the maven
pom.xml
config file which contains:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<packaging>pom</packaging>
<groupId>com.octoperf</groupId>
<artifactId>octoperf-test</artifactId>
<version>1.0.0-SNAPSHOT</version>
<build>
<plugins>
<plugin>
<groupId>com.octoperf</groupId>
<artifactId>octoperf-maven-plugin</artifactId>
<version>2.4.0</version>
<configuration>
<apiKey>YOUR_API_KEY</apiKey>
<workspaceName>Default</workspaceName>
<projectName>GitHub</projectName>
<scenarioName>Scenario</scenarioName>
</configuration>
</plugin>
</plugins>
</build>
<pluginRepositories>
<pluginRepository>
<id>octoperf-releases</id>
<name>OctoPerf Releases</name>
<url>https://github.com/octoperf/maven-repository/raw/master/releases</url>
</pluginRepository>
<pluginRepository>
<id>octoperf-snapshots</id>
<name>OctoPerf Snapshots</name>
<url>https://github.com/octoperf/maven-repository/raw/master/snapshots</url>
</pluginRepository>
</pluginRepositories>
</project>
Make sure to replace YOUR_API_KEY
by your account API Key.
- Then create a Github Action using maven to execute a scenario configured in your maven
pom.xml
:
Here is a sample github actions yml using maven to execute octoperf maven plugin:
# For more information on how to use our maven plugin, see:
# https://github.com/OctoPerf/octoperf-maven-plugin
name: OctoPerf Test using Github Actions
# Trigger an OctoPerf load test
on:
push:
branches: [ "master" ]
pull_request:
branches: [ "master" ]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up JDK 17
uses: actions/setup-java@v4
with:
java-version: '17'
distribution: 'temurin'
cache: maven
- name: Build with Maven
run: mvn octoperf:execute-scenario --file pom.xml
This will execute an existing scenario named Scenario
, expected to be in your account GitHub
project and Default
workspace.
- Commit those changes to your repository:
git add -A && git commit && git push
Which will push the 2 files to your git repository:
[master (root-commit) 8d8794b] OctoPerf Load Test
2 files changed, 51 insertions(+)
create mode 100644 .github/workflows/maven.yml
create mode 100644 pom.xml
Enumerating objects: 4, done.
Counting objects: 100% (4/4), done.
Delta compression using up to 12 threads
Compressing objects: 100% (4/4), done.
Writing objects: 100% (4/4), 894 bytes | 894.00 KiB/s, done.
Total 4 (delta 0), reused 0 (delta 0)
To github.com:jloisel/octoperf-github-actions.git
* [new branch] master -> master
- The CI Job should now be visible on Github Actions,
Congratulations! You've just triggered a load test on OctoPerf using GitHub CI and OctoPerf Maven Plugin.
The analysis report is visible in OctoPerf too. For further information, see our OctoPerf Maven Plugin documentation.