Skip to content

ci: check the artifact before publishing it and after - #944

Merged
valentinfernandez1 merged 3 commits into
mainfrom
tg/verify-published-artifacts
Sep 23, 2026
Merged

valentinfernandez1 merged 3 commits into
mainfrom
tg/verify-published-artifacts

Conversation

@TarikGul

Copy link
Copy Markdown
Member

Closes #695.

Both hosts already build an installable artifact from the default branch and publish it as a prerelease under a predictable tag. The two remaining steps were proving the artifact before it goes out and confirming it arrived.

The simulator archive was zipped and published without ever being read back. A bundle that unpacks without its executable installs happily and then does nothing, which reads downstream as the application being broken rather than as the archive being wrong. It is now opened and checked for an Info.plist and an executable, and refused if empty.

Both releases are read back after publishing. A release can be created with the asset upload having quietly failed, leaving a tag that looks published and a consumer that gets a 404, so the asset is looked up by name and rejected at zero bytes.

The Android build already proved its artifact before publishing, exactly one APK signed by the expected certificate, so that side needed no smoke test added.

Checked the lookup against a real release: the published asset reports its size, a name that is not there reports zero.

The simulator archive was zipped and published without being read back. A
bundle missing its executable installs and then does nothing, which reads
downstream as the application being broken rather than as the archive
being wrong, so the archive is now opened and checked for an Info.plist
and an executable.

Both releases are also read back once published. A release can be created
with the upload having quietly failed, which leaves a tag that looks
published and a consumer that gets a 404.

The Android build already proved its artifact before publishing: exactly
one APK, signed by the expected certificate.
@TarikGul
TarikGul requested a review from a team September 23, 2026 18:18
@github-actions github-actions Bot added the github_actions Pull requests that update GitHub Actions code label Sep 23, 2026
@github-actions

github-actions Bot commented Sep 23, 2026 •

Copy link
Copy Markdown
Contributor

CI Status: 23 required jobs green, 15 passed and 8 skipped by path filter.

All job results
job result
android-bindings skipped
changes success
changeset-guard skipped
cli-package skipped
codegen success
e2e skipped
explorer success
headless-install success
host-android-bindings skipped
host-android-detekt skipped
host-wasm success
ios-bindings success
ios-swift skipped
licenses success
playground success
provider-android-bindings skipped
release-guard success
rust success
ts-client success
ts-debugger success
ts-host success
wasm-provider success
workflow-lint success

Signing credentials: null as of null, a release may fail

Commit 4073c954 · run log

The archive check was described in the previous message but never landed,
and as written it would have failed every night: piping a listing into a
grep that exits on its first match sends the reader SIGPIPE, which
pipefail turns into a failure on a perfectly good archive. Reproduced on
a three thousand entry archive. The listing is materialised first, and
matched whole rather than as a substring.

The guard above it was dead for the same reason: with no bundle, ls fails
and set -e aborts at the assignment before the message it was meant to
print.

The published check now reads the name through jq's environment rather
than the shell, so a name needing escaping cannot break the filter, and
requires the asset to be uploaded rather than merely present: an asset
stranded mid-upload still reports a size, which is the case this exists
to catch. A size that is not a number fails rather than passing.

The Android step also sat below a comment belonging to the job after it.
$ENV.ASSET is read by jq and must stay unexpanded, which is what the
single quotes are for.
@valentinfernandez1
valentinfernandez1 added this pull request to the merge queue Sep 23, 2026
Merged via the queue into main with commit 6ecc7f0 Sep 23, 2026
34 checks passed
@valentinfernandez1
valentinfernandez1 deleted the tg/verify-published-artifacts branch September 23, 2026 20:11
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

github_actions Pull requests that update GitHub Actions code

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Publish a nightly prerelease with an installable build per host

2 participants