Skip to content

Track test

Track test #608

Workflow file for this run

name: NATS Server Tests
on:
push:
pull_request:
workflow_dispatch:
env:
RACE: ${{ (github.ref != 'refs/heads/main' && !startsWith(github.ref, 'refs/heads/release/') && github.event_name != 'pull_request') && '-race' || '' }}
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: ${{ github.ref != 'refs/heads/main' && !startsWith(github.ref, 'refs/heads/release/') }}
jobs:
signoffs:
name: Sign-offs
runs-on: ${{ vars.GHA_WORKER_SMALL || 'ubuntu-latest' }}
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Check all branch commits are signed off
if: github.event_name != 'pull_request'
run: |
for c in $(git rev-list --no-merges ${{ github.event.before }}..${{ github.event.after }}); do
if ! git log -1 --pretty=%B "$c" | grep -q '^Signed-off-by:'; then
echo "::error ::Commit $c has not been signed off in the commit message with a \`Signed-off-by:\` line"
git log -1 --pretty=format:"%h %s" "$c"
missing=1
fi
done
exit $missing
- name: Check all PR commits are signed off
if: github.event_name == 'pull_request'
run: |
for c in $(git rev-list origin/${{ github.base_ref }}..${{ github.event.pull_request.head.sha }}); do
if ! git log -1 --pretty=%B "$c" | grep -q '^Signed-off-by:'; then
echo "::error ::Commit $c has not been signed off in the commit message with a \`Signed-off-by:\` line"
git log -1 --pretty=format:"%h %s" "$c"
missing=1
fi
done
exit $missing
- name: Check PR description is signed off
if: github.event_name == 'pull_request'
run: |
if ! echo "${{ github.event.pull_request.body }}" | grep -Pq '^Signed-off-by:\s*(?!Your Name|.*<your\.email@example\.com>)'; then
echo "::error ::Pull request has not been signed off in the PR description with a \`Signed-off-by:\` line"
exit 1
fi
lint:
name: Lint
runs-on: ${{ vars.GHA_WORKER_SMALL || 'ubuntu-latest' }}
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install Go
uses: actions/setup-go@v5
with:
go-version: stable
- name: Run golangci-lint
# Use commit hash here to avoid a re-tagging attack, as this is a third-party action
# Commit 1481404843c368bc19ca9406f87d6e0fc97bdcfd = tag v7.0.0
uses: golangci/golangci-lint-action@1481404843c368bc19ca9406f87d6e0fc97bdcfd
with:
version: v2.1.2
skip-cache: true
skip-save-cache: true
args: --timeout=5m --config=.golangci.yml
build-latest:
name: Build (Latest Go)
runs-on: ${{ vars.GHA_WORKER_SMALL || 'ubuntu-latest' }}
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install Go
uses: actions/setup-go@v5
with:
go-version: stable
- name: Build NATS Server
run: go build
build-supported:
name: Build (Minimum Go)
runs-on: ${{ vars.GHA_WORKER_SMALL || 'ubuntu-latest' }}
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install Go
uses: actions/setup-go@v5
with:
go-version-file: "go.mod"
- name: Build NATS Server
run: go build
# Using GitHub-supplied workers for Windows for now.
# Note that the below testing steps depend on the Linux build
# only, as the Windows builds take a fair bit longer to set up.
build-windows:
name: Build (Minimum Go, ${{ matrix.os }})
strategy:
fail-fast: false
matrix:
os: [windows-2019, windows-2022]
runs-on: ${{ matrix.os }}
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install Go
uses: actions/setup-go@v5
with:
go-version-file: "go.mod"
- name: Build NATS Server
run: go build
store:
name: Test Stores
needs: [build-latest, build-supported, lint]
runs-on: ${{ vars.GHA_WORKER_MEDIUM || 'ubuntu-latest' }}
timeout-minutes: 30
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install Go
uses: actions/setup-go@v5
with:
go-version: stable
- name: Run unit tests
run: ./scripts/runTestsOnTravis.sh store_tests
js-no-cluster:
name: Test JetStream
needs: [build-latest, build-supported, lint]
runs-on: ${{ vars.GHA_WORKER_LARGE || 'ubuntu-latest' }}
timeout-minutes: 30
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install Go
uses: actions/setup-go@v5
with:
go-version: stable
- name: Run unit tests
run: ./scripts/runTestsOnTravis.sh js_tests
raft:
name: Test Raft
needs: [build-latest, build-supported, lint]
runs-on: ${{ vars.GHA_WORKER_LARGE || 'ubuntu-latest' }}
timeout-minutes: 30
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install Go
uses: actions/setup-go@v5
with:
go-version: stable
- name: Run unit tests
run: ./scripts/runTestsOnTravis.sh raft_tests
js-consumers:
name: Test JetStream Consumers
needs: [build-latest, build-supported, lint]
runs-on: ${{ vars.GHA_WORKER_LARGE || 'ubuntu-latest' }}
timeout-minutes: 30
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install Go
uses: actions/setup-go@v5
with:
go-version: stable
- name: Run unit tests
run: ./scripts/runTestsOnTravis.sh js_consumer_tests
js-cluster-1:
name: Test JetStream Cluster 1
needs: [build-latest, build-supported, lint]
runs-on: ${{ vars.GHA_WORKER_LARGE || 'ubuntu-latest' }}
timeout-minutes: 30
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install Go
uses: actions/setup-go@v5
with:
go-version: stable
- name: Run unit tests
run: ./scripts/runTestsOnTravis.sh js_cluster_tests_1
js-cluster-2:
name: Test JetStream Cluster 2
needs: [build-latest, build-supported, lint]
runs-on: ${{ vars.GHA_WORKER_LARGE || 'ubuntu-latest' }}
timeout-minutes: 30
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install Go
uses: actions/setup-go@v5
with:
go-version: stable
- name: Run unit tests
run: ./scripts/runTestsOnTravis.sh js_cluster_tests_2
js-cluster-3:
name: Test JetStream Cluster 3
needs: [build-latest, build-supported, lint]
runs-on: ${{ vars.GHA_WORKER_LARGE || 'ubuntu-latest' }}
timeout-minutes: 30
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install Go
uses: actions/setup-go@v5
with:
go-version: stable
- name: Run unit tests
run: ./scripts/runTestsOnTravis.sh js_cluster_tests_3
js-cluster-4:
name: Test JetStream Cluster 4
needs: [build-latest, build-supported, lint]
runs-on: ${{ vars.GHA_WORKER_LARGE || 'ubuntu-latest' }}
timeout-minutes: 30
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install Go
uses: actions/setup-go@v5
with:
go-version: stable
- name: Run unit tests
run: ./scripts/runTestsOnTravis.sh js_cluster_tests_4
js-supercluster:
name: Test JetStream Supercluster
needs: [build-latest, build-supported, lint]
runs-on: ${{ vars.GHA_WORKER_LARGE || 'ubuntu-latest' }}
timeout-minutes: 30
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install Go
uses: actions/setup-go@v5
with:
go-version: stable
- name: Run unit tests
run: ./scripts/runTestsOnTravis.sh js_super_cluster_tests
no-race-1:
name: Test No-Race 1
needs: [build-latest, build-supported, lint]
runs-on: ${{ vars.GHA_WORKER_LARGE || 'ubuntu-latest' }}
timeout-minutes: 30
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install Go
uses: actions/setup-go@v5
with:
go-version: stable
- name: Run unit tests
run: ./scripts/runTestsOnTravis.sh no_race_1_tests
no-race-2:
name: Test No-Race 2
needs: [build-latest, build-supported, lint]
runs-on: ${{ vars.GHA_WORKER_LARGE || 'ubuntu-latest' }}
timeout-minutes: 30
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install Go
uses: actions/setup-go@v5
with:
go-version: stable
- name: Run unit tests
run: ./scripts/runTestsOnTravis.sh no_race_2_tests
mqtt:
name: Test MQTT
needs: [build-latest, build-supported, lint]
runs-on: ${{ vars.GHA_WORKER_MEDIUM || 'ubuntu-latest' }}
timeout-minutes: 30
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install Go
uses: actions/setup-go@v5
with:
go-version: stable
- name: Run unit tests
run: ./scripts/runTestsOnTravis.sh mqtt_tests
msgtrace:
name: Test Message Tracing
needs: [build-latest, build-supported, lint]
runs-on: ${{ vars.GHA_WORKER_MEDIUM || 'ubuntu-latest' }}
timeout-minutes: 30
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install Go
uses: actions/setup-go@v5
with:
go-version: stable
- name: Run unit tests
run: ./scripts/runTestsOnTravis.sh msgtrace_tests
jwt:
name: Test JWT
needs: [build-latest, build-supported, lint]
runs-on: ${{ vars.GHA_WORKER_LARGE || 'ubuntu-latest' }}
timeout-minutes: 30
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install Go
uses: actions/setup-go@v5
with:
go-version: stable
- name: Run unit tests
run: ./scripts/runTestsOnTravis.sh jwt_tests
server-pkg-non-js:
name: Test Remaining Server Tests
needs: [build-latest, build-supported, lint]
runs-on: ${{ vars.GHA_WORKER_LARGE || 'ubuntu-latest' }}
timeout-minutes: 30
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install Go
uses: actions/setup-go@v5
with:
go-version: stable
- name: Run unit tests
run: ./scripts/runTestsOnTravis.sh srv_pkg_non_js_tests
non-server-pkg:
name: Test Other Packages
needs: [build-latest, build-supported, lint]
runs-on: ${{ vars.GHA_WORKER_MEDIUM || 'ubuntu-latest' }}
timeout-minutes: 30
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install Go
uses: actions/setup-go@v5
with:
go-version: stable
- name: Run unit tests
run: ./scripts/runTestsOnTravis.sh non_srv_pkg_tests