mirror of
https://github.com/kemko/nomad.git
synced 2026-01-05 09:55:44 +03:00
This change creates a reusable workflow for notifying Slack on CI failures. The message will include useful links and information about the failure, so product engineers can investigate and fix any problems. The new workflow is used by selected workflows which trigger on merges to main or release/* branches. The notification is only sent on failure and when the event was a push (PR merge) meaning the number of notifications should be minimal. The aim is to help identify and draw attention to failure across our release branches, in particular when automated processes happen.
143 lines
3.9 KiB
YAML
143 lines
3.9 KiB
YAML
name: Core CI Tests
|
|
on:
|
|
pull_request:
|
|
paths-ignore:
|
|
- 'README.md'
|
|
- 'CHANGELOG.md'
|
|
- '.changelog/**'
|
|
- '.tours/**'
|
|
- 'contributing/**'
|
|
- 'demo/**'
|
|
- 'dev/**'
|
|
- 'e2e/terraform/**'
|
|
- 'e2e/ui/**'
|
|
- 'integrations/**'
|
|
- 'pkg/**'
|
|
- 'scripts/**'
|
|
- 'terraform/**'
|
|
- 'ui/**'
|
|
- 'website/**'
|
|
push:
|
|
branches:
|
|
- main
|
|
- release/**
|
|
paths-ignore:
|
|
- 'README.md'
|
|
- 'CHANGELOG.md'
|
|
- '.changelog/**'
|
|
- '.tours/**'
|
|
- 'contributing/**'
|
|
- 'demo/**'
|
|
- 'dev/**'
|
|
- 'e2e/terraform/**'
|
|
- 'e2e/ui/**'
|
|
- 'integrations/**'
|
|
- 'pkg/**'
|
|
- 'scripts/**'
|
|
- 'terraform/**'
|
|
- 'ui/**'
|
|
- 'website/**'
|
|
|
|
env:
|
|
VERBOSE: 1
|
|
GOTESTARCH: amd64
|
|
CONSUL_VERSION: 1.14.4
|
|
VAULT_VERSION: 1.12.2
|
|
NOMAD_SLOW_TEST: 0
|
|
NOMAD_TEST_LOG_LEVEL: OFF
|
|
|
|
jobs:
|
|
checks:
|
|
uses: ./.github/workflows/checks.yaml
|
|
compile:
|
|
needs: [checks]
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
os: [ubuntu-24.04, macos-14, windows-2019]
|
|
runs-on: ${{matrix.os}}
|
|
timeout-minutes: 20
|
|
steps:
|
|
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
|
- uses: actions/setup-go@41dfa10bad2bb2ae585af6ee5bb4d7d973ad74ed # v5.1.0
|
|
with:
|
|
cache: ${{ contains(runner.name, 'Github Actions') }}
|
|
go-version-file: .go-version
|
|
cache-dependency-path: '**/go.sum'
|
|
- name: Run make dev
|
|
run: |
|
|
make bootstrap
|
|
make dev
|
|
tests-api:
|
|
needs: [checks]
|
|
runs-on: custom-linux-xl-nomad-22.04
|
|
timeout-minutes: 8
|
|
steps:
|
|
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
|
- uses: actions/setup-go@41dfa10bad2bb2ae585af6ee5bb4d7d973ad74ed # v5.1.0
|
|
with:
|
|
cache: true
|
|
go-version-file: .go-version
|
|
cache-dependency-path: '**/go.sum'
|
|
- name: Run API tests
|
|
env:
|
|
GOTEST_MOD: api
|
|
run: |
|
|
make bootstrap
|
|
make generate-all
|
|
sudo sed -i 's!Defaults!#Defaults!g' /etc/sudoers
|
|
sudo -E env "PATH=$PATH" make test-nomad-module
|
|
tests-groups:
|
|
needs: [checks]
|
|
runs-on: ubuntu-22.04
|
|
timeout-minutes: 30
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
groups:
|
|
- nomad
|
|
- client
|
|
- command
|
|
- drivers
|
|
- quick
|
|
steps:
|
|
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
|
- uses: actions/setup-go@41dfa10bad2bb2ae585af6ee5bb4d7d973ad74ed # v5.1.0
|
|
with:
|
|
cache: ${{ contains(runner.name, 'Github Actions') }}
|
|
go-version-file: .go-version
|
|
cache-dependency-path: '**/go.sum'
|
|
- name: Install optional dependencies
|
|
if: ${{ matrix.groups == 'drivers' }}
|
|
run: sudo apt update && sudo apt install qemu-system
|
|
- name: Run Matrix Tests
|
|
env:
|
|
GOTEST_GROUP: ${{matrix.groups}}
|
|
run: |
|
|
make bootstrap
|
|
make generate-all
|
|
make dev
|
|
sudo -E env "PATH=$PATH" hc-install install -version ${{env.VAULT_VERSION}} -path '${{env.GOPATH}}/bin' vault
|
|
sudo -E env "PATH=$PATH" hc-install install -version ${{env.CONSUL_VERSION}} -path '${{env.GOPATH}}/bin' consul
|
|
sudo sed -i 's!Defaults!#Defaults!g' /etc/sudoers
|
|
sudo -E env "PATH=$PATH" make test-nomad
|
|
|
|
handle-failure:
|
|
needs:
|
|
- checks
|
|
- compile
|
|
- tests-api
|
|
- tests-groups
|
|
if: always() && github.event_name == 'push' && contains(needs.*.result, 'failure')
|
|
uses: ./.github/workflows/test-failure-notification.yml
|
|
secrets: inherit
|
|
with:
|
|
actor: ${{ github.triggering_actor }}
|
|
git-branch: ${{ github.ref_name }}
|
|
workflow-run-id: ${{ github.run_id }}
|
|
workflow-name: ${{ github.workflow }}
|
|
|
|
permissions:
|
|
contents: read
|
|
id-token: write
|