# Race, Go. Dispatched by hand. # # The race detector roughly doubles both time and memory, which the shared runner box # cannot afford on a push, and it is not part of a release either: locally it belongs to # `just gates`, which races the tree before the tag is cut. Here it is an explicit # decision rather than a routine. # # Every step is one command, so the step that fails is the gate that failed. name: Race on: workflow_dispatch: env: # interpres is fetched directly from the self-hosted Gitea, not via # proxy.golang.org, and skips the public checksum database. GOPRIVATE: sourcedock.dev # One core: parallelism buys no speed here and costs memory the box does not have. GOFLAGS: -p=1 GOMAXPROCS: "2" jobs: race: runs-on: fedora timeout-minutes: 20 steps: - uses: actions/checkout@v7 - uses: actions/setup-go@v6 with: go-version-file: go.mod cache: true - name: Install gcc # The race detector needs cgo and the runner image carries no C compiler. run: dnf install -y gcc - name: Race run: go test -race -count=1 -timeout 10m ./...