Repository navigation
Conversation
GitHub bills every job rounded up to a whole minute, so the five-job matrix plus the build job cost six minutes per run for about three minutes of work. One job runs each combination as its own step, in its own venv, and keeps running after a failure so every combination reports. PRs into main only, drafts skipped, superseded PR runs cancelled. Refs #160214
On ubuntu-slim's single vCPU the wall-clock bound in the XML masking linear-time test failed in all five combinations. Refs #160214
A concurrency group holds one pending run and cancels the older pending one when a newer run arrives, even with cancel-in-progress false, so a group shared by every push to a branch could drop a queued push. Pushes now group by run_id; PR runs still group by PR number and cancel their superseded run. Refs #160214
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.
Part of #160214 (cut GitHub Actions minutes across the org).
Why
GitHub counts every job rounded up to a whole minute. CI ran a 5-job test matrix plus a build job, each 10-45 s, so every run counted 6 minutes on
ubuntu-latest.Note: ecsctx is a public repo, so these minutes are free. The September usage report shows 890 Actions minutes for ecsctx with a net cost of $0. This PR lowers the minute count and frees runner slots. It saves no money.
What changed
cijob replaces thetestmatrix and thebuildjob. Each Python/Django combination is its own named step with its own venv, so a red step still names exactly what broke. Every step hasif: !cancelled(), so one failing combination does not hide the rest.uv sync, thenuv pip install Django~=X, thenuv run --no-sync pytest. The logs show each step running the Django version it names.runner.temp, not the checkout. Hatchling ignores a venv's own.gitignore, so a venv inside the checkout ends up in the sdist anduv buildfails (checked locally).uv buildand thedistartifact upload are still there.pull_requestnow runs only for PRs intomain, withtypes: [opened, synchronize, reopened, ready_for_review]. Draft PRs are skipped.push: mainis unchanged.concurrency: ci-<PR number or run_id>withcancel-in-progress: true. A new push to a PR cancels its older run. Each push tomaingets its own group, so a queued push is never dropped.ubuntu-latest, notubuntu-slim. On slim (1 vCPU) every combination failed the 0.25 s wall-clock bound intest_many_start_tags_nothing_closes_take_linear_time, 2-3 cases each (run). Everything else passed there, and the job took 4m53s.No required status checks reference the old
test (...)/buildjob names (no repo rulesets, no branch protection, and no org ruleset targets ecsctx).Trade-offs
mainand get a new push. A retarget alone is aneditedevent, which does not start CI. Before, the workflow ran on every PR on purpose.Before / after (minutes counted per run)
ubuntu-latestubuntu-latestRuns on this PR:
Pre-existing flake
test_many_start_tags_nothing_closes_take_linear_timealso fails onmaintoday: 8 of the last 9 CI runs are red on that one test. It asserts each masking call finishes in under 0.25 s, so it fails on slower runner hardware.