38 lines
1.1 KiB
YAML
38 lines
1.1 KiB
YAML
# Race, Go. Dispatched by hand.
|
|
#
|
|
# The race detector roughly doubles both time and memory, which the shared runner box
|
|
# cannot afford on every push. Locally it belongs to `just gates`, which runs it once
|
|
# per task; here it is an explicit decision rather than a routine, a hand dispatch
|
|
# when a change asks for one. Development carries its race gate on every push through
|
|
# that local gate.
|
|
#
|
|
# Every step is one command, so the step that fails is the gate that failed.
|
|
name: Race
|
|
|
|
on:
|
|
workflow_dispatch:
|
|
|
|
env:
|
|
# 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: 45
|
|
steps:
|
|
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
|
|
|
|
- uses: actions/setup-go@924ae3a1cded613372ab5595356fb5720e22ba16 # 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 30m ./...
|