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 }}