Repository navigation
Shard CI tests across runners and add one required CI check - #915
Merged
Merged
Conversation
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.
Split each supported Ruby/OS combination across three GitHub runners. CI benchmarks improve complete workflow time from 4m 08s to 2m 15s (46% faster); two shards took 2m 51s. Each runner retains the existing local worker pool.
The shard selector deterministically assigns every example to exactly one runner. Sixteen new examples cover partition completeness, balance, ordering, and invalid shard settings. Each runner still verifies its executed example IDs and merges local worker coverage; unique Coveralls flags preserve coverage across all shards.
Add a single final check named CI for repository rulesets. It depends on every test shard and lint, explicitly fails for failed/canceled/skipped dependencies, and finalizes coverage reporting. Move lint into the same workflow so the required check includes it. Require CI instead of individual Ruby/OS checks.
GitHub Actions benchmarks (complete workflow, including setup and reporting):
Validation: both benchmark workflows and final PR-head CI pass, including all 18 shards, lint, and final coverage reporting. Logs verify all 10,170 example executions (1,695 on each of six Ruby/OS combinations), with consistent suite identities and complete shard coverage. Local two-shard execution passes all 1,695 examples (the existing 1,679 plus 16 new shard-selector tests). Actionlint and RuboCop pass. The required-check predicate rejects failure/cancellation/skipped results in exhaustive local truth-table checks. Final PR-head verification: successful run on ce3e508. Linux test steps take 9–19s; Windows test steps take 59–96s. No repository ruleset settings were changed; the check is ready to select as CI.