Repository navigation
CI's test check is the coverage merge, so a run bills one job fewer - #1422
Merged
Merged
Conversation
A private repository is billed per job, each rounded up to the minute. After the shards, CI ran two jobs: coverage_merge (the cross-shard coverage floor and shard-union parity) and a summary job named `test` that existed only to give the ruleset a stable name and to fail when a shard or the merge did. On #1421's last run they took 21 and 4 seconds: two billed minutes for 25 seconds of work. They are now one job named `test`. It carries `if: always()`, so a failed or skipped shard still runs it rather than skipping it (a skipped required check reads as passing), and its first step fails the job unless `needs.test_shard.result` is success. The merge, the coverage upload and the runtime-log save follow. The upload was `if: always()`; it now also needs the shard guard to have passed, since after a failed shard there is no merged report to upload. The cache save keeps its default condition. The required check keeps its name, so the ruleset is unchanged; no fork requires `coverage_merge` (modelrails_base_wads requires `CI/test`). A template invariant pins the shape: no coverage_merge job, `if: always()` on `test`, a shard guard ending in `exit 1` before the merge, and every later `always()` step gated on the guard's outcome. Dropping `if: always()` turned it red, and so did ungating the upload. The runtime-log and coverage-floor invariants now read the `test` job, and the comments and testing docs that named coverage_merge name it instead; one comment keeps the old name because it records what that job caught.
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.
A private repository is billed per job, each rounded up to the minute.
After the shards, CI ran two jobs: coverage_merge (the cross-shard
coverage floor and shard-union parity) and a summary job named
testthat existed only to give the ruleset a stable name and to fail when a
shard or the merge did. On #1421's last run they took 21 and 4 seconds:
two billed minutes for 25 seconds of work.
They are now one job named
test. It carriesif: always(), so a failedor skipped shard still runs it rather than skipping it (a skipped
required check reads as passing), and its first step fails the job unless
needs.test_shard.resultis success. The merge, the coverage upload andthe runtime-log save follow. The upload was
if: always(); it now alsoneeds the shard guard to have passed, since after a failed shard there is
no merged report to upload. The cache save keeps its default condition.
The required check keeps its name, so the ruleset is unchanged; no fork
requires
coverage_merge(modelrails_base_wads requiresCI/test).A template invariant pins the shape: no coverage_merge job,
if: always()ontest, a shard guard ending inexit 1before the merge,and every later
always()step gated on the guard's outcome. Droppingif: always()turned it red, and so did ungating the upload. Theruntime-log and coverage-floor invariants now read the
testjob, andthe comments and testing docs that named coverage_merge name it instead;
one comment keeps the old name because it records what that job caught.
Verification
bin/parallel-rspec): 6059 examples, 0 failures,example-count parity, coverage floor met, exit 0; pre-push hooks green.
(dropping
if: always()fromtest; ungating the coverage upload).staticandtest.testonceand no
coverage_merge.