Repository navigation
feat(ci): add a go-test-timeout input to reusable-ci - #376
Merged
Merged
Conversation
The go-test helper action runs go test with no -timeout, so Go's 10m per-binary default applied and callers could not raise it. The new input is passed as GOFLAGS=-timeout=<value> on the Go test steps. The go-ci job cap moves from 40 to 60 minutes so a 30m test timeout still fires before the runner cancels the job. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_015uvXsjoTL4866VhFevH7wW
5 of 7 tasks
jdfalk
marked this pull request as ready for review
October 16, 2026 23:46
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Lets callers raise Go's per-test-binary timeout in
reusable-ci.yml's Go CI job.falkcorp/audiobook-organizer'sinternal/databasepackage runs 510–600s under-racethere, right at Go's 10m default, and was failing on it. A caller couldn't raise that limit before this change.Issues Addressed
feat(ci): go-test-timeout input
Description: The
go-testcommand ingha-ci-workflow-helpers(embedded Python,action.yml:541at the pinned4b5f4d4) runsgo test -v -race -coverprofile=... ./...with no-timeoutflag. It does not readGHCOMMON_SCRIPTS_DIR, so changingci_workflow.pyhere would have no effect. The action also has no timeout input.go testdoes read test flags fromGOFLAGS, so whengo-test-timeoutis set, both Go test steps run withGOFLAGS=-timeout=<value>. When it is empty (the default), nothing changes.The
go-cijob cap goes from 40 to 60 minutes. It has to stay above setup (~4.5m) + the slowest suite (~20.5m) + the test timeout, and 60 keeps that true for timeouts up to 30m. The comment next to the cap and the input's description both say this.Files Modified:
.github/workflows/reusable-ci.yml: new input,GOFLAGSon the Test and coverage-profile steps, job cap 40 → 60changelog.d/20261016-go-test-timeout-input.md: fragmentTesting
GOFLAGS=-timeout=1s go test -race ./...failed at 1.02s with the goroutine dump;-timeout=10spassed.GOFLAGS=-timeout=1s go build ./...andgo tool cover -funcignored the flag and succeeded.Breaking Changes
None. The input is optional and defaults to empty. The only change callers see without opting in is the higher job cap, and that only matters for a run that hangs.
Additional Notes
A follow-up PR in
falkcorp/audiobook-organizerpassesgo-test-timeout: '25m'(the same value as its Makefile and its other CI jobs). Itsreusable-ci.yml@pins have to move to this PR's merge SHA.Checklist
🤖 Generated with Claude Code
https://claude.ai/code/session_015uvXsjoTL4866VhFevH7wW
Generated by Claude Code