Skip to content

fix(ci): install gitsemver from its raw release binary - #263

Merged
piontec merged 1 commit into
mainfrom
fix-gitsemver-raw-binary-url
Aug 5, 2026
Merged

fix(ci): install gitsemver from its raw release binary#263
piontec merged 1 commit into
mainfrom
fix-gitsemver-raw-binary-url

Conversation

@piontec

@piontec piontec commented Aug 5, 2026

Copy link
Copy Markdown
Contributor

Part of giantswarm/giantswarm#37347Lack of schema testing in github-workflows lets bugs pass

Pre-emptive fix for the same bug that broke giantswarm/schemalint's action at v2.6.2 — found while investigating that outage (#262).

What actually caused the schemalint outage

Not the install-binary-action bump, and not really schemalint. The legacy
<repo>-v<version>-<platform>.tar.gz release assets are built by this repo, in
create-release.yaml's create_and_upload_build_artifacts job — which only runs when the caller
passes build-release-artifacts: true.

The chore: align files according to platform standards template drops that input. Every repo
it touches silently stops publishing tarballs at its next release, while install-binary-action's
default download_url (and every explicit tarball URL) still asks for them by name:

repo build-release-artifacts align-files PR that dropped it released since?
schemalint absent giantswarm/schemalint#319 (2026-07-29) yes → broke at v2.6.2
gitsemver absent giantswarm/gitsemver#260 (2026-06-11) no — not yet
architect absent giantswarm/architect#1325 (2026-06-17) yes, v8.3.0 is raw-binary-only
helm-values-gen true
apptestctl true

Why this matters here

We pin gitsemver-v${version}-linux-amd64.tar.gz in four places. It resolves today only because
the pinned v2.0.1 (2026-06-08) predates align-files #260 and therefore ships both asset
names. The next gitsemver release ships raw binaries only — and then create-release.yaml and
create-release-pr.yaml 404 for every repo in the org, since they are consumed at @main.

That is a much bigger blast radius than the schemalint incident, and it is armed right now.

The change

Four Install gitsemver steps switch to the raw asset and drop tarball_binary_path
(extension-less URLs skip unarchiving — install-binary-action >= v3.1.0):

-          download_url: ".../${version}/${binary}-${version}-linux-amd64.tar.gz"
-          tarball_binary_path: "*/${binary}"
+          download_url: ".../${version}/${binary}-linux-amd64"

create-release-pr.yaml already installs architect this way, so this just makes gitsemver
consistent with it.

Verification

No-op today, correct tomorrow — both asset names exist at the pinned v2.0.1:

$ curl -sSfL -o gsv https://github.com/giantswarm/gitsemver/releases/download/v2.0.1/gitsemver-linux-amd64
$ ./gsv --version
gitsemver version 2.0.1 (git: 31e7ecfa63d24e71f199d338d1ad0a6bfd0bb7fb, built: 2026-06-08T14:19:45Z)

The smoke_test is unchanged and still passes on the raw binary.

Not changed

apptestctl (gitops-validate.yaml) keeps its tarball URL — it still passes
build-release-artifacts: true, so its tarball is correct today. It becomes wrong the day
align-files reaches it. The durable fix belongs in the align-files template and in
install-binary-action's default URL; both are being raised upstream.

🤖 Generated with Claude Code

The legacy gitsemver-v<version>-linux-amd64.tar.gz assets are produced by
this repo own create_and_upload_build_artifacts job, which only runs when
the caller passes build-release-artifacts: true. giantswarm/gitsemver#260
removed that input, so the next gitsemver release will not have a tarball
and every release workflow in the org would 404 - exactly how schemalint
action broke at v2.6.2.

The pinned v2.0.1 predates the removal and ships both asset names, so this
is a no-op today and correct afterwards. Verified the raw asset downloads
and that "gitsemver --version" works on it.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@piontec
piontec merged commit 41bcf80 into main Aug 5, 2026
5 checks passed
@piontec
piontec deleted the fix-gitsemver-raw-binary-url branch August 5, 2026 13:40
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