Skip to content

Fix installer pointing at an unpublished release (WAX-605) - #76

Merged
Arshia001 merged 1 commit into
mainfrom
wax-605-wasixcc-install-script-is-broken
Aug 7, 2026
Merged

Fix installer pointing at an unpublished release (WAX-605)#76
Arshia001 merged 1 commit into
mainfrom
wax-605-wasixcc-install-script-is-broken

Conversation

@Arshia001

Copy link
Copy Markdown
Contributor

Fixes WAX-605.

What was broken

curl -fsSL https://wasix.cc | sh failed with tar: Error opening archive: Unrecognized archive format.

wasix.cc served an install.sh pinned to VERSION="0.4.5", but the v0.4.5 GitHub release was still a draft. Draft release assets 404 for anonymous downloads, so the asset URL returned the 9-byte body Not Found — matching the 100 9 100 9 in the report. curl -L without -f piped those 9 bytes straight into tar, which blamed the archive format instead of the 404.

The release itself built fine and published to crates.io, which is why cargo install wasixcc worked as a workaround.

The draft has since been published manually, so installs work again. This PR stops it recurring.

Changes

release.yml — stop creating draft releases. draft: true meant every release needed a manual "Publish release" click; 0.4.4 got one, 0.4.5 did not. Everything gating that job (version consistency, build, crates.io publish) has already passed by the time the release is cut, so the draft state bought nothing and silently broke the installer.

install.sh — fail loudly on HTTP errors. Downloads to a file with curl -fL / wget and checks the exit status before extracting, instead of piping the response into tar. A missing asset now says:

curl: (22) The requested URL returned error: 404
Error: Failed to download https://github.com/.../v9.9.9/wasixcc-x86_64-unknown-linux-gnu.tar.gz

deploy-website.yml — stop deploying install.sh ahead of the release. The website deployed on any push to main touching installer/**, so it went live pinning 0.4.5 37 seconds before the release workflow even started (11:58:17Z vs 11:58:54Z). That window existed on every release, draft or not. install.sh is now excluded from the push trigger and ships via workflow_run once Release succeeds; other installer changes (landing page, server.py) still deploy immediately, and workflow_dispatch remains as a manual escape hatch.

Testing

Ran the real download_wasixcc against an isolated $HOME:

Case Result
v0.4.5, curl exits 0, extracts wasixccenv, --version reports wasixcc 0.4.5, no leftover tarball
v9.9.9, curl exits 1, Error: Failed to download <url>
v9.9.9, wget exits 1, Error: Failed to download <url>

Also confirmed sh -n install.sh passes and both workflow YAMLs parse.

🤖 Generated with Claude Code

wasix.cc served an install.sh pinned to v0.4.5 while that GitHub release
was still a draft. Draft assets 404 for anonymous downloads, so the
installer piped a 9-byte "Not Found" body into tar and died with
"Unrecognized archive format".

Three fixes, none of which alone is sufficient:

- release.yml no longer creates draft releases. The manual publish step
  was a standing outage waiting to happen, and everything gating that
  job (version consistency, build, crates.io publish) has already passed
  by the time the release is cut.

- install.sh downloads to a file with curl --fail instead of piping into
  tar, so an HTTP error reports the URL that failed rather than a bogus
  archive-format error.

- deploy-website.yml no longer ships install.sh on merge to main. It
  raced ahead of the release build by design, so wasix.cc advertised a
  version that did not exist yet on every single release. install.sh now
  deploys after Release succeeds; other installer changes still deploy
  immediately.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Copilot AI lite review requested due to automatic review settings August 7, 2026 11:03

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR prevents curl -fsSL https://wasix.cc | sh from breaking due to the installer pointing at a GitHub Release asset that isn’t publicly downloadable yet (draft releases and/or deploy timing), and improves installer failure behavior when downloads fail.

Changes:

  • Updates install.sh to download release tarballs to a file with curl -fL / wget and fail loudly before extraction on HTTP errors.
  • Updates release.yml to stop creating draft releases so release assets are anonymously downloadable immediately.
  • Updates deploy-website.yml to avoid deploying install.sh ahead of a successful Release by moving install.sh deployment to a workflow_run trigger.

Reviewed changes

Copilot reviewed 3 out of 3 changed files in this pull request and generated 1 comment.

File Description
installer/public/install.sh Avoids piping HTTP error bodies into tar; fails clearly on download failures.
.github/workflows/release.yml Publishes non-draft GitHub releases so assets are publicly accessible.
.github/workflows/deploy-website.yml Adjusts deployment triggers/checkout behavior to better align install.sh deployment with successful releases.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread .github/workflows/deploy-website.yml
@Arshia001
Arshia001 merged commit 93dff01 into main Aug 7, 2026
11 checks passed
@Arshia001
Arshia001 deleted the wax-605-wasixcc-install-script-is-broken branch August 7, 2026 12:44
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants