CI / test (push) Failing after 30m4s
Every test run since c22528c ended at the job's 30-minute deadline with
nothing after internal/release, while the same tests pass with -race on
Linux, as a user and as root, in 5 minutes. A 12-minute test timeout makes
the hang name itself.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
71 lines
2.6 KiB
YAML
71 lines
2.6 KiB
YAML
# Runs on a containerized act_runner (label: ubuntu-latest).
|
|
#
|
|
# The runner needs outbound access to the Docker registry for its job image and
|
|
# to github.com for the actions below. If GitHub is unreachable from the runner,
|
|
# replace the checkout step with a plain `git clone` and install Go by hand —
|
|
# see .gitea/workflows/README.md in maas-proxmox for that pattern.
|
|
name: CI
|
|
|
|
on:
|
|
push:
|
|
branches: [main]
|
|
pull_request:
|
|
# Lets a queued or failed run be retried from the UI without a new commit.
|
|
workflow_dispatch:
|
|
|
|
jobs:
|
|
test:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
|
|
- uses: actions/setup-go@v5
|
|
with:
|
|
# Track the toolchain in go.mod rather than pinning it twice.
|
|
go-version-file: go.mod
|
|
cache: true
|
|
|
|
- name: Check formatting
|
|
run: |
|
|
out=$(gofmt -l .)
|
|
if [ -n "$out" ]; then echo "gofmt needed on:"; echo "$out"; exit 1; fi
|
|
|
|
- name: Vet
|
|
run: go vet ./...
|
|
|
|
- name: Test with the race detector
|
|
# Under the job's limit, so a package that hangs panics with the
|
|
# test it was in and where every goroutine waited, rather than the
|
|
# job ending at its deadline with nothing said: from 2026-10-15 every
|
|
# run did, printing nothing after internal/release.
|
|
run: go test -race -timeout 12m ./...
|
|
|
|
- name: Build
|
|
run: go build ./...
|
|
|
|
# llmgw-kb runs on people's own machines, Windows included, which no
|
|
# test here runs on: building it for each catches a Unix-only call.
|
|
- name: Build llmgw-kb for every system
|
|
run: |
|
|
for target in windows/amd64 windows/arm64 darwin/amd64 darwin/arm64 linux/amd64 linux/arm64; do
|
|
CGO_ENABLED=0 GOOS="${target%/*}" GOARCH="${target#*/}" go build -o /dev/null ./cmd/llmgw-kb
|
|
done
|
|
|
|
# The Terraform provider is a module of its own, which ./... above does
|
|
# not reach. Its tests check its client against docs/admin-api.openapi.json,
|
|
# so a change to the admin API that breaks the provider fails here. The
|
|
# acceptance tests (TF_ACC=1) are left out: they need Terraform itself.
|
|
- name: Test the Terraform provider
|
|
working-directory: terraform-provider-llmgw
|
|
run: |
|
|
go vet ./...
|
|
go test ./...
|
|
|
|
# The NVML backend needs cgo and cannot run without a driver, but it must
|
|
# at least keep compiling: it is the only source of NVLink topology and a
|
|
# break would otherwise surface on a GPU node, far from here.
|
|
- name: Build the NVML backend
|
|
env:
|
|
CGO_ENABLED: "1"
|
|
run: go build -tags nvml ./...
|