Repository navigation
Replace the Node.js action with a composite action running a Bash script - #35
Merged
Merged
Conversation
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Ports src/main.js to a standalone Bash script with the same inputs, messages, download URL, retry policy, extraction directory and GITHUB_PATH output. It isn't wired into action.yml yet. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Sources install.sh with a stubbed curl and backoff to cover input validation, URL construction, retry policy, error escaping, the git fallback and lazy tool checks without network access. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Runs build/main.cjs and install.sh over the input matrix in the same workspace path and compares exit code, error annotations, GITHUB_PATH bytes, download URL, info log lines, extracted tree, stray workspace files and the installed compiler's version output. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
test/composite/action.yml is the planned composite action.yml, pointing at install.sh. parity.yml lints and unit-tests install.sh, runs the old-vs-new parity test on every hosted OS/arch, and exercises the composite action end to end: version and PATH checks across pinned images, repeated installs, caller defaults, negative cases, a hostile caller environment, container jobs with and without required tools, and the windows-11-arm Bash start-up spike. The root action.yml still uses node24, so users aren't affected. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Only runs: changes in action.yml; name, description, author and inputs are untouched. The end-to-end tests move from parity.yml to test.yml and now target uses: ./, adding the pinned-image matrix, a static interface check against 11452bc, the README examples as written, and the repeated-install, caller-defaults, negative, hostile-environment, container and windows-11-arm cases. The temporary test/composite copy is removed. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Lists the tools the Bash implementation needs, when each one is needed, and the @v1-node fallback for users who can't provide them. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Trim exactly the whitespace JavaScript's String.trim() removes, including NBSP and BOM, in bash 3.2 and any locale. - Bound curl connection and stalled-transfer time to three minutes, like the old HTTP client's socket timeout, and retry timeouts. - Give extensionless downloads a .zip suffix before Windows PowerShell 5.1's Expand-Archive, which rejects other extensions. - Test real stalled downloads against a loopback server, and the PowerShell extraction fallback on Windows. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- install.sh: report the physical cwd in the PATH entry, like Node's path.resolve(): symlinks resolved (/var -> /private/var on macOS) and long rather than 8.3 names on Windows (cygpath -l). - test.yml: shells put their own directories in front of PATH, so C3 now checks which ispc bash, pwsh and cmd resolve rather than PATH[0]. - unit.sh: set a git identity for annotated tags in the fallback fixture, use a physical scratch path, and silence SC2317, the older shellcheck name for SC2329. - parity.sh: drop the linux-archive-on-Windows case; the Node action fails there too, since Windows can't create the archive's symlinks. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Drops TRANSITION.md and its section and criterion IDs from test names and comments, which would be meaningless without it. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
azwolski
approved these changes
Oct 8, 2026
Collaborator
|
Claude (Opus 5.5), non-blocking: This request has no timeout, unlike |
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.
Rewrites the action as a composite action that runs one Bash script (
install.sh), replacing the Node.js bundle. Inputs, behavior and log messages are unchanged for users ofispc/install-ispc-action@main.Why
@actions/core,@actions/tool-cache,undici,esbuild). Recent history is mostly CVE bumps and rebuilds (undicioverrides,esbuildand@actions/*upgrades). The shell version has no third-party code and only calls tools already on the runner (curl,tar,jq,git).build/main.cjsto keep in sync, no npm Dependabot churn, and no forced Node runtime migrations like node20 → node24. It also works on older and GHES runners without a recent Node runtime.INPUT_VERSION=1.23.0 bash install.sh.Changes
install.sh: a port ofsrc/main.jswith the same version, platform and arch resolution, URLs, retry policy, error annotations andGITHUB_PATHoutput.action.yml: onlyruns:changes, to composite. Name, description, author and inputs are byte-identical.parity.yml: shellcheck, offline unit tests, download-timeout tests, and a differential test of old (build/main.cjs) vs new on every hosted OS/arch.test.yml: end-to-end tests across pinned Ubuntu, Windows and macOS images (including ARM), plus the README examples, negative cases, a hostile caller environment, and container jobs.@v1-nodefallback.The Node sources stay until the cleanup PR after a soak period, so reverting the switch commit restores the old action.