name: check on: push: branches: - '**' jobs: check: runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 2024-10-23 with: # The fingerprint step below needs history to find the last commit # that touched the Docker build context. fetch-depth: 0 - name: Mark superseded run statuses # Gitea cancels the in-flight run when another commit is pushed to the # same branch and records the cancellation as `failure`, so a commit # that was never tested reads as a test result. The script rewrites # those statuses to say what happened. See its header for why the # state stays `failure` and not `skipped`. env: GITEA_TOKEN: ${{ secrets.GITEA_TOKEN }} run: script/ci-mark-superseded - name: Fingerprint the build context # `.dockerignore` keeps docs out of the build context, so a docs-only # commit legitimately replays the whole image from cache and stays # cheap. Every other commit writes a new fingerprint into the context, # which invalidates the `COPY . .` layer of both check stages: a # commit that was never linted, formatted-checked, tested and built # cannot report success from cache. run: | set -eu fp="$(git log -1 --format=%H -- . ':!*.md' ':!LICENSE' ':!.editorconfig')" printf '%s\n' "${fp:-$GITHUB_SHA}" > .ci-fingerprint - name: Build Docker image (runs make check) run: script/cibuild