ci: check the artifact before publishing it and after - #944
Merged
Merged
Conversation
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.
Contributor
|
CI Status: 23 required jobs green, 15 passed and 8 skipped by path filter. All job results
Signing credentials: null as of null, a release may fail Commit |
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
approved these changes
Sep 23, 2026
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.
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.plistand 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.