Copy, paste, adjust your URL and thresholds. Every example uses --raw so the pipeline fails automatically on load test failure.
How Binary Delivery Works
NexoLoad ships as a single compiled binary — no Python runtime, no pip, no dependencies. Choose the delivery model that matches your environment.
Internet
Standard / Cloud
Pull the latest binary directly from GitHub Releases on every pipeline run. Always current, zero maintenance.
curl -fsSL https://github.com/bjnexora/nexoload/releases/latest/download/nexoload-lite-linux \
-o nexoload-lite
chmod +x nexoload-lite
Federal Network
Private Mirror
BJNexora pushes every release build to a private artifact server. Federal clients get credentials and use the same curl pattern — just a different host. Contact us for access →
curl -fsSL https://artifacts.bjnexora-solutions.com/nexoload/latest/nexoload-lite-linux \
-o nexoload-lite
chmod +x nexoload-lite
Air-Gapped / SCIF
Zero Network
Commit the binary directly to your repo under bin/. No downloads, no external calls — works on physically isolated networks.
chmod +x bin/nexoload-lite
./bin/nexoload-lite \
--url $API_URL \
--users 20 --raw
name: Load Test Gate
on:
push:
branches: [main, staging]
pull_request:
jobs:
load-test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Download NexoLoad Lite
run: |
curl -fsSL https://github.com/bjnexora/nexoload/releases/latest/download/nexoload-lite-linux \
-o nexoload-lite
chmod +x nexoload-lite
- name: Run NexoLoad Lite load test
run: |
./nexoload-lite \
--url ${{ secrets.API_BASE_URL }}/health \
--users 20 \
--duration 30 \
--assert-status 200 \
--raw
# Exit code 1 = test failed = pipeline blocked
name: Load Test Gate — Pro
on:
push:
branches: [main]
jobs:
load-test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Download NexoLoad Pro
run: |
curl -fsSL https://github.com/bjnexora/nexoload/releases/latest/download/nexoload-pro-linux \
-o nexoload-pro
chmod +x nexoload-pro
- name: Run NexoLoad Pro load test
run: |
./nexoload-pro \
--url ${{ secrets.API_BASE_URL }}/api/v1/users \
--method GET \
--users 100 \
--duration 60 \
--rampup 15 \
--sla 400 \
--assert-status 200 \
--token ${{ secrets.API_TOKEN }} \
--raw
- name: Upload HTML report on failure
if: failure()
run: |
./nexoload-pro \
--url ${{ secrets.API_BASE_URL }}/api/v1/users \
--users 50 --duration 30 \
--html-report load-report.html
continue-on-error: true
- name: Attach report artifact
if: always()
uses: actions/upload-artifact@v4
with:
name: load-test-report
path: load-report.html
name: Load Test Gate — Titan (10,000+ VUs)
on:
push:
branches: [main]
jobs:
titan-load-test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Download NexoLoad Titan
run: |
curl -L https://github.com/your-org/nexoload/releases/latest/download/nexoload-titan-linux \
-o nexoload-titan
chmod +x nexoload-titan
- name: Run Titan high-concurrency load test
run: |
./nexoload-titan \
--url ${{ secrets.API_BASE_URL }}/api/v1/endpoint \
--users 1000 \
--duration 60 \
--rampup 20 \
--sla 400 \
--sla-tps 500 \
--assert-status 200 \
--no-verify-ssl \
--raw
pipeline {
agent any
environment {
API_URL = credentials('api-base-url')
}
stages {
stage('Load Test') {
steps {
sh """
curl -fsSL https://github.com/bjnexora/nexoload/releases/latest/download/nexoload-lite-linux -o nexoload-lite
chmod +x nexoload-lite
./nexoload-lite \\
--url \${API_URL}/health \\
--users 20 \\
--duration 30 \\
--assert-status 200 \\
--raw
"""
}
}
stage('Deploy') {
steps {
echo 'Load test passed — deploying...'
// your deploy steps here
}
}
}
post {
failure {
echo 'Load test FAILED — deployment blocked'
emailext subject: 'Load Test Failed',
body: 'NexoLoad detected failures. Check build logs.',
to: 'devops@yourcompany.com'
}
}
}
pipeline {
agent any
environment {
API_URL = credentials('api-base-url')
API_TOKEN = credentials('api-token')
}
stages {
stage('Load Test — NexoLoad Pro') {
steps {
sh """
curl -fsSL https://github.com/bjnexora/nexoload/releases/latest/download/nexoload-pro-linux -o nexoload-pro
chmod +x nexoload-pro
./nexoload-pro \\
--url \${API_URL}/api/v1/orders \\
--method POST \\
--body '{"test":true}' \\
--users 100 \\
--duration 60 \\
--rampup 15 \\
--sla 400 \\
--assert-status 200 \\
--token \${API_TOKEN} \\
--raw
"""
}
}
stage('Deploy to Production') {
steps {
sh './deploy.sh production'
}
}
}
}
pipeline {
agent any
environment {
API_URL = credentials('api-base-url')
}
stages {
stage('High-Concurrency Load Test — Titan') {
steps {
sh """
curl -fsSL https://github.com/bjnexora/nexoload/releases/latest/download/nexoload-titan-linux -o nexoload-titan
chmod +x nexoload-titan
./nexoload-titan \\
--url \${API_URL}/api/v1/feed \\
--users 5000 \\
--duration 60 \\
--rampup 30 \\
--sla 500 \\
--assert-status 200 \\
--raw
"""
}
}
stage('Blue-Green Switch') {
steps {
sh './switch-traffic.sh blue green'
}
}
}
}
stages:
- test
- load-test
- deploy
load-test-lite:
stage: load-test
image: alpine
before_script:
- apk add --no-cache curl
- curl -fsSL https://github.com/bjnexora/nexoload/releases/latest/download/nexoload-lite-linux -o nexoload-lite
- chmod +x nexoload-lite
script:
- ./nexoload-lite
--url $API_BASE_URL/health
--users 20
--duration 30
--assert-status 200
--raw
rules:
- if: '$CI_COMMIT_BRANCH == "main"'
deploy-production:
stage: deploy
script:
- ./deploy.sh
needs: [load-test-lite]
rules:
- if: '$CI_COMMIT_BRANCH == "main"'
stages:
- unit-test
- load-test
- deploy
load-test-pro:
stage: load-test
image: alpine
variables:
USERS: '100'
DURATION: '60'
before_script:
- apk add --no-cache curl
- curl -fsSL https://github.com/bjnexora/nexoload/releases/latest/download/nexoload-pro-linux -o nexoload-pro
- chmod +x nexoload-pro
script:
- ./nexoload-pro
--url $API_BASE_URL/api/v1/items
--users $USERS
--duration $DURATION
--rampup 15
--sla 400
--assert-status 200
--token $API_TOKEN
--raw
artifacts:
when: always
expire_in: 7 days
rules:
- if: '$CI_COMMIT_BRANCH == "main"'
stages:
- load-test
- promote
titan-stress-test:
stage: load-test
image: alpine
before_script:
- apk add --no-cache curl
- curl -fsSL https://github.com/bjnexora/nexoload/releases/latest/download/nexoload-titan-linux -o nexoload-titan
- chmod +x nexoload-titan
script:
- ./nexoload-titan
--url $API_BASE_URL/api/v1/stream
--users 5000
--duration 120
--rampup 30
--sla 500
--sla-tps 1000
--assert-status 200
--warmup 10
--raw
rules:
- if: '$CI_PIPELINE_SOURCE == "schedule"'
# Run nightly at scale — triggered by a GitLab scheduled pipeline
trigger:
branches:
include: [main, release/*]
pool:
vmImage: ubuntu-latest
variables:
API_URL: $(API_BASE_URL)
steps:
- script: |
curl -fsSL https://github.com/bjnexora/nexoload/releases/latest/download/nexoload-lite-linux \
-o nexoload-lite
chmod +x nexoload-lite
displayName: 'Download NexoLoad Lite'
- script: |
./nexoload-lite \
--url $(API_URL)/health \
--users 20 \
--duration 30 \
--assert-status 200 \
--raw
displayName: 'NexoLoad Load Test Gate'
failOnStderr: false
trigger:
branches:
include: [main]
pool:
vmImage: ubuntu-latest
steps:
- script: |
curl -fsSL https://github.com/bjnexora/nexoload/releases/latest/download/nexoload-pro-linux \
-o nexoload-pro
chmod +x nexoload-pro
displayName: 'Download NexoLoad Pro'
- script: |
./nexoload-pro \
--url $(API_BASE_URL)/api/v1/products \
--method GET \
--users 100 \
--duration 60 \
--rampup 15 \
--sla 400 \
--assert-status 200 \
--token $(API_TOKEN) \
--raw
displayName: 'NexoLoad Pro Load Test'
- script: echo "Load test passed — proceeding to deploy"
displayName: 'Deploy'
condition: succeeded()
trigger: none
schedules:
- cron: "0 2 * * *" # Nightly at 2am UTC
displayName: Nightly Titan Stress Test
branches:
include: [main]
pool:
vmImage: ubuntu-latest
steps:
- script: |
curl -fsSL https://github.com/bjnexora/nexoload/releases/latest/download/nexoload-titan-linux \
-o nexoload-titan
chmod +x nexoload-titan
displayName: 'Download NexoLoad Titan'
- script: |
./nexoload-titan \
--url $(API_BASE_URL)/api/v1/search \
--users 5000 \
--duration 120 \
--rampup 30 \
--warmup 10 \
--sla 500 \
--sla-tps 2000 \
--assert-status 200 \
--raw
displayName: 'Titan Nightly Stress Test'