59 lines
2.1 KiB
YAML
59 lines
2.1 KiB
YAML
# Race, Go. Dispatched by hand, and never a gate on a push or a tag: the release tag is
|
|
# cut only after `just gates` has already raced the tree, so this workflow is the
|
|
# explicit second opinion, not a step of the release.
|
|
#
|
|
# 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.
|
|
#
|
|
# The matrix keeps the libm check the push pipeline once carried: the same linux/amd64
|
|
# oracle digests run against glibc (fedora, openeuler) and musl (alpine), which is
|
|
# exactly where floating-point kernels can drift. Dispatched, because three full
|
|
# sweeps are not affordable on every push.
|
|
#
|
|
# 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: ${{ matrix.runner }}
|
|
timeout-minutes: 45
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
include:
|
|
- runner: fedora
|
|
packages: dnf install -y git gcc perl
|
|
- runner: alpine
|
|
packages: apk add --no-cache git gcc perl musl-dev
|
|
- runner: openeuler
|
|
packages: dnf install -y git gcc perl
|
|
steps:
|
|
- name: Install git, gcc and Perl
|
|
# The race detector needs cgo, hence gcc; alpine adds musl-dev for the same
|
|
# reason. The installs are no-ops where the packages already exist.
|
|
run: ${{ matrix.packages }}
|
|
|
|
- uses: actions/checkout@v7
|
|
|
|
- uses: actions/setup-go@v6
|
|
with:
|
|
go-version-file: go.mod
|
|
cache: true
|
|
|
|
- name: Oracle digests for this platform
|
|
run: go test -run TestOracle -v .
|
|
|
|
- name: Race
|
|
# Equal to `packages` in the project's justfile: the logic packages,
|
|
# the main-program examples aside.
|
|
run: go test -race -count=1 -timeout 30m . ./internal/... ./grad/... ./integrate/... ./io/... ./linalg/... ./optim/... ./signal/... ./spmd/... ./stats/...
|