name: Tests on: pull_request: push: branches: [main] permissions: contents: read jobs: test: name: vet + fmt + tests runs-on: ubuntu-24.04 steps: - uses: actions/checkout@v6 with: persist-credentials: false fetch-depth: 0 - name: Relevant changes id: changes run: | if [ "$GITHUB_EVENT_NAME" = "pull_request" ]; then git fetch --no-tags origin "$GITHUB_BASE_REF" base="origin/$GITHUB_BASE_REF" else base='${{ github.event.before }}' fi if git diff --quiet "$base"...HEAD -- '*.go' go.mod go.sum Dockerfile .dockerignore .github data README.md; then echo "code=false" >> "$GITHUB_OUTPUT" else echo "code=true" >> "$GITHUB_OUTPUT" fi # `docker build` streams the context to the daemon. A compose bind-mount of # `.` mounts an empty host dir instead, because the job is itself a container. - name: Latest supported Go if: ${{ steps.changes.outputs.code == 'true' }} run: docker build . # Runs even when the step above failed, so a red build says whether the # failure is version-specific. - name: Lowest supported Go if: ${{ !cancelled() && steps.changes.outputs.code == 'true' }} run: docker build --build-arg GO_VERSION=1.22.12 .