Track test #608
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 |