Skip to content

ci: setup reusable workflow for integration tests #1

ci: setup reusable workflow for integration tests

ci: setup reusable workflow for integration tests #1

Workflow file for this run

name: Tests
on:
pull_request:
branches: ['**']
merge_group:
branches: ['main']
push:
branches: ['main']
workflow_dispatch:
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true
jobs:
lint:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup go
uses: actions/setup-go@v5
with:
go-version: 'stable'
cache-dependency-path: "**/*.sum"
- name: golangci-lint
uses: golangci/golangci-lint-action@v6
with:
version: v1.52.2
skip-cache: true # actions/setup-go has already done this
- name: Verify license headers
run: go run tools/headercheck/header_check.go
- name: vet
run: go vet ./...
- name: Verify LICENSE-3rdparty.csv
run: ./tools/verify-licenses.sh
env:
TMPDIR: ${{ runner.temp }}
unit-tests:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
go-version: ['1.21', '1.22', '1.23.0-rc.1']
name: Unit tests (go${{ matrix.go-version }})
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Checkout Go
uses: actions/setup-go@v5
with:
go-version: ${{ matrix.go-version }}
cache-dependency-path: "**/*.sum"
- name: Run unit tests
run: |-
mkdir -p coverage
go test -shuffle=on -cover -covermode=atomic -coverpkg=./... -coverprofile=${{ github.workspace }}/coverage/unit.out -race ./...
go -C _integration-tests test -shuffle=on -cover -covermode=atomic -coverpkg=./...,github.com/datadog/orchestrion/... -coverprofile=${{ github.workspace }}/coverage/integration.out -race ./...
- name: Determine simple go version
if: always() && github.event_name != 'merge_group'
id: simple-go-version
run: echo "::set-output name=version::${COMPLETE_VERSION:0:4}"
shell: bash
env:
COMPLETE_VERSION: ${{ matrix.go-version }}
- name: Upload coverage report
# We want this even if the tests failed
if: always() && github.event_name != 'merge_group'
uses: codecov/codecov-action@v4
with:
token: ${{ secrets.CODECOV_TOKEN }}
flags: go${{ steps.simple-go-version.outputs.version }},${{ runner.os }},${{ runner.arch }},unit
files: ./coverage/unit.out,./coverage/integration.out
name: Unit Tests (go${{ matrix.go-version }})
# This is just a join point intended to simplify branch protection settings
complete:
runs-on: ubuntu-latest
needs:
- lint
- unit-tests
if: '!cancelled()'
steps:
- name: Done
if: needs.lint.result == 'success' && needs.unit-tests.result == 'success' && needs.integration-tests.result == 'success'
run: echo "OK"
- name: Done
if: needs.lint.result != 'success' || needs.unit-tests.result != 'success' || needs.integration-tests.result != 'success'
run: |-
echo "Failed!"
exit 1