ci: split push.yml into reusable workflows, share build steps via composite action - #1710
Merged
Merged
Conversation
…posite action Breaks the single push.yml into comparison-tests.yml, execution-tests.yml, and lint.yml, called from push.yml as reusable workflows. Each OS job's install/build steps (plus the Windows Defender exclusion and the copy-to-C:\source\ts-loader workaround) are now shared via the build-ts-loader composite action, also reused by the Windows test probe. Also generalizes the probe to run on Ubuntu/macOS/Windows via a new os input, defaulting to all three. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Benchmark (Ubuntu)
PR branch = |
Benchmark (Windows)
PR branch = |
Reflects that it now probes comparison tests on Ubuntu/macOS/Windows, not just Windows. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Benchmark (macOS)
PR branch = |
…docs - add cache: yarn to execution-tests setup-node steps - give ci.yml's token contents: read only - rename build-and-lint workflow to "build and lint" and strip trailing whitespace - prefix benchmark job names and use "macOS" casing consistently - update AGENTS.md: ci.yml replaces push.yml, C:\source copy is for path consistency (not Defender), list all workflows using the build action Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The standalone build job duplicated work every other CI job already does via the build-ts-loader composite action, so drop it and keep just lint (which builds before linting). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The Ubuntu, macOS and Windows jobs were the same steps three times over and had started to drift. A matrix with a per-OS ROOT (the workspace, or C:/source/ts-loader on Windows where build-ts-loader builds) lets every step run in bash on all three OSes. Check names, artifact names and PR comment markers are unchanged so existing comments still update in place. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Cold typeCheck builds were regularly hitting the 60s per-scenario budget (e.g. stopping after 44/62 iterations). 90s lets them complete all iterations while still bounding pathologically slow scenarios. Also document the budget in the benchmark README, replace its stale Windows Defender paragraph with how CI runs the benchmark now, and fix AGENTS.md describing the two sides as running back-to-back in one process. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
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.
Summary
push.ymlwithci.yml, which callscomparison-tests.yml,execution-tests.ymlandlint.ymlas reusable workflows (workflow_call)pushnow only triggers onmain(PRs no longer run CI twice), and in-progress runs are only cancelled for PRsci.ymlgrants the tokencontents: readonly.github/actions/build-ts-loader/action.yml, used by every workflow that builds ts-loader (comparison tests, execution tests, lint, benchmark, release)C:\source\ts-loaderand installs/builds there, giving the consistent path the comparison tests' output normalisation expects; callers no longer pass aworking-directoryC:\/D:\excluded (confirmed withGet-MpComputerStatuson this branch)test/benchmark-tests/README.mdsetup-node(andcache: yarn) in comparison tests, lint, and the test probe, which previously used each runner image's default Node; execution tests keep their Node matrix and gaincache: yarn. The release workflow deliberately has no cachesudofrom the Ubuntu comparison testswindows-test-probe.ymltotest-probe.yml, now running on Ubuntu, macOS and/or Windows via a newosworkflow_dispatch input (defaultall)test-probe.ymlinAGENTS.md, points its execution-test matrix reference atexecution-tests.yml, and corrects its description of how the benchmark runs the two sidesBefore merging
main's branch protection required checks: the old contexts (Comparison Tests Ubuntu,Comparison Tests Windows,Execution Tests … (24, next, …)) will never report again. New contexts look likecomparison tests / ubuntu,execution tests / windows (24, 6.0.2, 5),lint / lintTest plan
ci.yml's reusable-workflow jobs (comparison tests, execution tests, lint) run green on this PRwindows-test-probe.yml(pre-rename) dispatched successfully against this branch across all three OSestest-probe.ymldispatches successfully once this merges tomain(workflow_dispatch workflows must be registered on the default branch under their current filename before they're dispatchable)release.ymlbuilds via the composite action on the next release🤖 Generated with Claude Code