Repository navigation
ci: cut motd and push-worker further and lint both groups in parallel - #62
Merged
Merged
Conversation
The eight motd segments left two jobs at 98 s and 77 s wall clock and a 63 s slowest segment. The three heaviest segments are split along their case-lifecycle boundaries instead of by line count, giving eleven segments spread over jobs of four, four and three: * segment 4 keeps the target, pointer and pending hook cases, segment 5 takes the six building phases with their three signals; * segment 7 keeps the dependency, noop and final-group cases, segment 8 takes the illegal legacy names, legacy backups and legal imports; * segments 9 and 10 run one implementation of the rollback-damage cases each and keep the normal rollback cases with segment 10; those cases move verbatim into run_rollback_damage_cases, so both halves share one body instead of running it twice. Every segment still builds its own fixtures, and with TEST_SEGMENT unset the guards run in file order, which is the original order. tests/run.sh keeps the plan precheck, the duplicate detection and the child environment cleanup; the segment count is bounded lexically to 1..12 and every TEST_SEGMENT_SET entry to 0..11 before the arithmetic range comparison. tests/test-shards.sh follows the eleven-segment expectations, runs segment 10 as executable evidence for two-digit indices, and validates every segment_set token strictly, so "8 9 10x" is refused instead of being filtered out by the coverage arithmetic.
The eight-segment split left the second job at 83 s because it carried the three heaviest segments (30/61/61/66 s) while the first finished in 53 s. Cut the heavy tail instead of piling it up: - the uninstall signal matrix (39 independent cases) splits by signal into segments 3 (HUP, INT) and 4 (TERM), which keeps the serial order HUP, INT, TERM; - the metadata capture matrix becomes segment 7 and the anchor plus creation/publication matrix becomes segment 8; - the last segment (bookkeeping, capture boundaries, restore publishing, disable and uninstall barriers) becomes segments 9, 10 and 11. Every segment still builds its own fixture, serial mode keeps the original order, and the PASS tally is unchanged at 312. Both OS matrices now run four, four and four segments in three jobs whose sets mix early and late segments so the 58 s straggler never shares a job with another heavy half.
The twelve-segment split spread cloudflare over three jobs per OS, which put twenty-one jobs in the plan (nine per OS plus lint). GitHub Free runs twenty at a time, so cloudflare-a waited 44 s for a runner and the wall clock rose to 109 s. Cut the suite into two jobs instead, balancing the measured segment cost: - cloudflare-a: 2 3 5 6 11 -> 1+42+25+58+23 = 149 s - cloudflare-b: 0 1 4 7 8 9 10 -> 11+12+21+19+39+21+19 = 142 s Every segment still runs exactly once per OS, the heavy tail (42 s and 58 s) stays apart from the 39 s segment, and the plan drops to nineteen jobs, so no job queues behind another. tests/test-shards.sh expects the new pair; the segment count stays twelve, so the token and count rejection cases are unchanged.
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.
结果
main 的 Shell tests 墙钟 107 s → 84 s(run
40125741952,19 个前置作业,无排队)。各必需检查全绿。-P4)PASS 与基线一致:motd 648(Ubuntu)/ 653(Debian)、push-worker 303、cloudflare 312。
改动
building_phase前切、旧段 6 在illegal_legacy_name前切、旧段 7 按tool/module拆。-n1 -P4,分别wait,任一失败归一 exit 1;保留Run ShellCheck步骤名。TEST_SEGMENTS上限 12、token 有界词法校验;test-shards.sh严格 token 校验、非法 token 负控使用真实段数。验证
test-shards.sh与分片负控、test-lint-coverage.sh与 lint 负控通过。08/09/010)按十进制解释,LENS 定向复审通过。未达成与后续