Skip to content

Make the release pipeline able to release - #5

Merged
thorstenalpers merged 3 commits into
mainfrom
fix/verify-signing-key
Aug 31, 2026
Merged

Make the release pipeline able to release#5
thorstenalpers merged 3 commits into
mainfrom
fix/verify-signing-key

Conversation

@thorstenalpers

@thorstenalpers thorstenalpers commented Aug 31, 2026

Copy link
Copy Markdown
Owner

Three commits, each one a thing that stopped a release run after it had already done the expensive work. Started as the signing-password check and grew as each run got one step further.

1 · Find out whether the key can sign before building anything with it

The check from #3 only proves a key is present. Two runs failed at the bundler, six minutes in, for two different reasons:

said meant
Missing comment in secret key no key at all
Wrong password for that key key set, password not

Signing a throwaway file right after npm ci settles both halves in a second. The signature is public and the key is read from the environment, not the command line, so nothing reaches a log.

2 · Let a manual run be a rehearsal instead of a failure

The next run got all the way to the last step: ⚠️ GitHub Releases requires a tag. A release belongs to a tag; started by hand there is none.

A run without a publish decision now attaches the installer, its signature and latest.json to itself and says plainly that it published nothing — which is what the manual runs were being used for anyway.

3 · Release when the version changes, not when someone remembers to tag

This is the part you asked for. Bumping the number is the whole ceremony:

npm version patch

Merge that, and the push to main builds, signs, creates the tag at that commit and publishes. A push whose version is already released stops in under a minute on a Linux runner, before anything is compiled — so ordinary merges cost almost nothing and never fail.

It also fixes something an automatic release would have turned into a lie: the version was written in four places and read from a fifth that was a string literal in two views. package.json holds it, tauri.conf.json points at it, and the interface reads it through __APP_VERSION__. Verified by bumping to 0.2.7, rebuilding, and watching the Info page follow.

🤖 Generated with Claude Code

thorsten added 2 commits August 31, 2026 16:54
The earlier check only proves a key is present, which is why the run got
all the way to the bundler again — this time to be told the password was
wrong. Signing a throwaway file settles both halves in a second.

The signature it produces is public and the key stays in the environment,
so nothing here can leak into a log.
A release belongs to a tag. Started by hand there is none, so the last
step refused — after the build, the signing and everything else had
already succeeded, which is the most expensive place to learn it.

A run without a tag now attaches the installer, its signature and
latest.json to itself and says plainly that it published nothing. The
version in latest.json comes from the tag when there is one and from
tauri.conf.json when there is not, rather than from a branch name that
would have written "main" into it.
@thorstenalpers

Copy link
Copy Markdown
Owner Author

Extended with the last failure from the same run: ⚠️ GitHub Releases requires a tag.

A release belongs to a tag; started by hand there is none, so the publish step refused — after the build, the signing and everything else had already succeeded. The third consecutive time this pipeline spent six minutes to report something it could have known at the start.

A run without a tag is now a rehearsal: it builds, signs and checks, attaches the installer, its signature and latest.json to the run as an artifact, and says plainly that it published nothing. latest.json takes its version from the tag when there is one and from tauri.conf.json when there is not — the old line would have written main into it.

Bumping the number is the whole ceremony now. A push to main whose
version has no tag yet builds, signs, tags at that commit and publishes;
a push whose version is already out stops in under a minute on a Linux
runner, before anything is compiled. Running it by hand stays a
rehearsal.

The version had been written in four places and read from a fifth that
was a string literal in two views — which an automatic release would
have turned into a lie on the first bump. package.json holds it,
tauri.conf.json points at it, and the interface reads it through
__APP_VERSION__.
@thorstenalpers thorstenalpers changed the title Find out whether the key can sign before building anything with it Make the release pipeline able to release Aug 31, 2026
@thorstenalpers
thorstenalpers merged commit b3ec794 into main Aug 31, 2026
2 checks passed
@thorstenalpers
thorstenalpers deleted the fix/verify-signing-key branch August 31, 2026 15:19
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.

1 participant