Repository navigation
ci: move to the ecosystem CI standard - #247
Merged
Merged
Conversation
Tests now gate the merge on all three OS. Before, only ubuntu ran the plain tests, and the race step (an external instrumenter) had continue-on-error, so a race or a macOS/Windows test failure never turned CI red. - go test on every OS; go test -race with CGO_ENABLED=1 on that step only (the toolchain's ThreadSanitizer), replacing kolkov/racedetector - golangci-lint v2.15.0 from the shared gogpu/.github setup action (cached, sha256-checked) instead of a per-job download of latest - lint-targets: windows/amd64 and darwin/arm64 legs, since desktop/ and the examples compile against gogpu's per-OS API - every action pinned by commit SHA; Dependabot for github-actions - go mod tidy check; the examples step is gone (they are in ./...) - a Required checks job over every job, for the ruleset to require Pattern copied from gogpu ci.yml at ef8260b (LEAD-005).
The readback tests ran on the 0.1.54 dependencies. They would only have started skipping under wgpu v0.34, which rejects an unpadded copy; the padding added in 0.1.55 keeps them running. The release notes already say this.
The window's animation pumper calls WindowProvider.RequestRedraw from its own goroutine, which the hosts allow (gogpu documents it as safe from any goroutine). The test double incremented a plain int there while the test read it, and go test -race reported it on macOS in TestWindow_AnimPumper_StartsOnInvalidation. The production path is unchanged.
kolkov
force-pushed
the
ci/ecosystem-standard
branch
from
November 8, 2026 10:05
30540e0 to
8546b7b
Compare
Codecov Report✅ All modified and coverable lines are covered by tests. 📢 Thoughts on this report? Let us know! |
kolkov
added a commit
to gogpu/g3d
that referenced
this pull request
Nov 8, 2026
The test matrix covers oldstable and stable; test-minimum runs exactly the go.mod line (1.25), which this machine never tests. fail-fast: false keeps one OS's race failure from cancelling the others and hiding their results (gogpu/ui#247). Vulncheck is informational: it is not in the gate, so a new CVE does not block unrelated PRs, and a finding with no fixed version yet does not turn the run red. No 386 leg: measured 2026-11-08, wgpu v0.34.9 does not compile for 32-bit (constant 4294967294 overflows int in core/track) and goffi has no 386 syscall implementation.
kolkov
added a commit
to gogpu/gogpu
that referenced
this pull request
Nov 8, 2026
One failing leg must not cancel the others: each OS and Go version is its own evidence (gogpu/ui#247).
kolkov
added a commit
to gogpu/gogpu
that referenced
this pull request
Nov 8, 2026
One failing leg must not cancel the others: each OS and Go version is its own evidence (gogpu/ui#247).
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.
Moves ui's CI to the pattern gogpu now runs on main (ci.yml at ef8260b).
The main gap it closes: tests did not gate the merge on macOS and Windows. Only the ubuntu job ran the plain tests, and the race step on every OS ran
kolkov/racedetectorwithcontinue-on-error: true, so neither a race nor a macOS/Windows test failure turned CI red.Changes in
.github/workflows/ci.yml:go teston all three OS, plusgo test -racewithCGO_ENABLED=1on that step only. Everything else stays atCGO_ENABLED=0, the build users ship.gogpu/.githubsetup action (cached, sha256-checked) instead of downloadinglateston every run. Earlier today that download returned 504 for over an hour.Lint - windows/amd64andLint - darwin/arm64legs. ui has no per-OS files of its own, butdesktop/and the examples compile against gogpu's per-OS API, which the Linux lint never sees..github/dependabot.ymlkeeps them current. The root module is left out of Dependabot, since ecosystem deps move only to released versions in cascade order.go mod tidymust leavego.mod/go.sumunchanged. The separate examples build step is gone, because the examples are part of./...since 0.1.55.Required checksjob depends on every other job and fails unless all of them succeeded. The branch ruleset will require only this job; that switch is a separate settings change.A second commit corrects the 0.1.55 CHANGELOG note about the readback tests. They ran on the 0.1.54 dependencies; wgpu v0.34 would have made them skip, and the row padding prevents that. The release notes already say this.
The third commit fixes a data race in a test double that the old setup never reported.
go test -raceon macOS caught it on the first run: the window's animation pumper callsRequestRedrawfrom its own goroutine, and the mock provider counted those calls in a plainintwhile the test read it. The hosts allow that call from any goroutine (gogpu documents it), so production code is unchanged and the counter is now atomic. TheTestmatrix also getsfail-fast: false: on that run the macOS failure cancelled the Linux and Windows jobs, which hid their results.Proving the new checks can fail. Two runs had a temporary probe commit, since dropped (runs 42469289570 and 42469586731). It added an unused function that only windows compiles, another that only darwin compiles, and a test with a data race. On the second run:
Lint - windows/amd64andLint - darwin/arm64each flagged their probe, and LinuxLintstayed green;-racefailed on all three, on the probe test only;Required checksfailed.Local, with
GOWORK=off: golangci-lint for linux/amd64, windows/amd64 and darwin/arm64 reports 0 issues without the probe commit. With it, windows and darwin each report their probe and linux reports 0.go mod tidyleaves no diff.