96 lines
2.4 KiB
YAML
96 lines
2.4 KiB
YAML
name: tests
|
|
on:
|
|
workflow_call:
|
|
inputs:
|
|
stress-tests:
|
|
description: 'Run stress tests'
|
|
required: false
|
|
type: boolean
|
|
default: false
|
|
codecov:
|
|
required: false
|
|
type: boolean
|
|
default: false
|
|
runs-on:
|
|
required: false
|
|
type: string
|
|
default: 'ubuntu-latest'
|
|
secrets:
|
|
codecov_token:
|
|
required: false
|
|
jobs:
|
|
build:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- uses: actions/setup-go@v4
|
|
with:
|
|
go-version: '^1.26'
|
|
- run: make build
|
|
|
|
detect-modules:
|
|
runs-on: ubuntu-latest
|
|
outputs:
|
|
modules: ${{ steps.set-modules.outputs.modules }}
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- uses: actions/setup-go@v5
|
|
with:
|
|
go-version: '^1.26'
|
|
- id: set-modules
|
|
run: echo "modules=$(go list -m -json | jq -s '.' | jq -c '[.[].Dir]')" >> $GITHUB_OUTPUT
|
|
|
|
lint:
|
|
needs: detect-modules
|
|
runs-on: ubuntu-latest
|
|
strategy:
|
|
matrix:
|
|
modules: ${{ fromJSON(needs.detect-modules.outputs.modules) }}
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- uses: actions/setup-go@v4
|
|
with:
|
|
go-version: '^1.26'
|
|
- name: golangci-lint ${{ matrix.modules }}
|
|
uses: golangci/golangci-lint-action@v9.2.0
|
|
with:
|
|
working-directory: ${{ matrix.modules }}
|
|
|
|
tests:
|
|
needs: [build]
|
|
runs-on: ${{ inputs.runs-on }}
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- uses: actions/setup-go@v4
|
|
with:
|
|
go-version: '^1.26'
|
|
- run: cat .env >> $GITHUB_ENV || true
|
|
- run: make up
|
|
- run: make wait
|
|
- run: make test_short
|
|
- run: make test
|
|
timeout-minutes: 30
|
|
- run: make test_race
|
|
- run: make test_stress
|
|
if: ${{ inputs.stress-tests }}
|
|
- name: Dump docker logs on failure
|
|
if: failure()
|
|
uses: jwalton/gh-docker-logs@a8cb5301950dd4d2b86619cd487b3b281526b178 # v2.2.0
|
|
codecov:
|
|
runs-on: ${{ inputs.runs-on }}
|
|
if: ${{ inputs.codecov }}
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- uses: actions/setup-go@v4
|
|
with:
|
|
go-version: '^1.26'
|
|
- run: cat .env >> $GITHUB_ENV || true
|
|
- run: make up
|
|
- run: make wait
|
|
- run: make test_codecov
|
|
- uses: codecov/codecov-action@v4
|
|
with:
|
|
fail_ci_if_error: true
|
|
files: ./coverage.out
|
|
token: ${{ secrets.codecov_token }}
|