ci: add test runner#52
Draft
tamird wants to merge 12 commits into
Draft
Conversation
f0d1a65 to
10b9501
Compare
5509c76 to
b84f05f
Compare
Zig classifies linker inputs by filename and rejects Go race runtime objects with the .syso extension, even when they are forwarded through the linker argument interface. Create a hard-linked .o alias for each downloaded race runtime and have the compiler trampoline substitute that path.
Zig can compile and partially link the cross-race runtime, but the Go internal linker cannot resolve its libc references. Force external link mode for Zig-backed race builds so Zig performs the final link as well.
Coalescing architecture jobs lets each Go version reuse toolchain setup, but serial execution gives back most of the wall-clock savings. Run the architectures concurrently after shared race and emulation setup. Keep result mutation and checkpoint writes in the coordinator so completion order does not affect the report or diagnostics.
The Go compiler emits expected -m diagnostics with file positions. GitHub Actions interprets them as failures, creating ten bogus annotations in every inlining-enabled job. Keep successful diagnostics silent. Replay stdout and stderr through their original streams if the command or inlining assertion fails.
Hosted runner setup dominates this compatibility matrix. Replace the one-job-per-version layout with balanced version pairs that install exact toolchains through golang.org/dl. Keep Go 1.3 and 1.4 on setup-go and install all gccgo packages once. Emit and checkpoint one result file per Go version before acquisition. The report can then preserve successful siblings when a shard fails while still using the job conclusion for pending work.
Replace the runner framework with two small source files that own toolchain orchestration and per-architecture execution. Download paired SDKs concurrently, then run versions sequentially and architectures in parallel. Checkpoint one result file per job so the report can preserve completed cells and reconstruct missing plans. Keep setup-go's GOROOT for Go 1.3 and 1.4, and use Zig rather than cross-GCC packages for race builds.
Use current release tags for every action and let GitHub apply its normal job lifetime instead of maintaining separate timeout budgets. Document that paired Go versions share one runner to amortize startup and that Go 1.3 and 1.4 use setup-go because golang.org/dl has no wrappers for them.
Use major action tags and let setup-zig follow the latest tagged Zig release. Make retry artifacts attempt-specific and derive report ordering from the matrix jobs instead of a duplicated version list. Remove the runner unit tests and protocol schema, use conventional long options, and document compatibility behavior that would otherwise look like dead code.
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.
No description provided.