Skip to content

Tags: Secretchronicles/TSC

Tags

v2.2.0-beta2

Toggle v2.2.0-beta2's commit message
Ask which release to build for, make it if it is missing, and build a…

…ll of it

Two things, and the second needed the first.

EVERY WORKFLOW NOW TAKES THE RELEASE AS AN INPUT AND CREATES IT IF IT IS NOT
THERE. The .deb, Windows, Mac and Flatpak workflows attached to "the newest
release" and failed outright when there was none, which made the first build of
any new version a chicken-and-egg problem: no release until something is built,
nothing built until there is a release. .github/scripts/ensure-release.sh is
what they all call now - it makes the release when it is missing, and leaves it
alone when it is there.

The notes come from CHANGELOG. .github/scripts/changelog-notes.sh pulls out the
block for a version - the `* Version 2.2.0-beta2.` line and the items under it -
and turns the tab-indented items into markdown bullets, folding continuation
lines into the bullet above so a wrapped item stays one item. A release is then
described by the file the project already keeps rather than by something typed
into a form and lost. A version with no entry still gets a release, because the
binaries are the point, with a line saying where the description should have
come from. A release that exists but has empty notes gets them filled in on the
next run, which covers the ones made by hand.

release-all.yml IS THE ONE RUN. It asks which release to build for - empty means
the version CHANGELOG names - creates it once, and then runs Deb, AppImage,
Flatpak, Windows and Mac in parallel against that same tag, so every package on
a release comes from one run and one commit instead of six runs started on
different days.

Repos runs last and alone, because it builds the apt, AppImage and Flatpak
repositories OUT OF the files the others attached; run alongside them it would
package whatever happened to have finished first.

The tag is resolved once, in its own job, rather than six times in parallel: six
jobs racing to create the same release is six chances for one to lose the race
and fail on "already exists".

always() throughout, so a platform that fails does not stop the rest being
published - one emulated .deb architecture running out of clock should not cost
the release its Windows installers. A summary job lists what actually ended up
on the release and warns by KIND about what did not, because "no .deb at all" and
"one architecture missing" are different problems and neither should need six
logs opened to tell apart.

NOT verified: no workflow has been run. What was checked: that all seven
workflows are valid YAML, that release-all's job graph is the intended one and
every workflow it calls declares the tag and publish inputs it passes, that all
eight scripts pass bash -n, and that changelog-notes.sh finds the entry for
2.2.0-beta2 and exits 1 for a version that has none.

v2.1.0

Toggle v2.1.0's commit message
Stable version 2.1.0.

v2.1.0-rc2

Toggle v2.1.0-rc2's commit message
Second Release Candidate of version 2.1.0.

v2.1.0-rc1

Toggle v2.1.0-rc1's commit message
First Release Candidate for version 2.1.0.

v2.1.0-beta2

Toggle v2.1.0-beta2's commit message
Second beta version of 2.1.0.

v2.1.0-beta1

Toggle v2.1.0-beta1's commit message
First beta version of 2.1.0

v2.0.0

Toggle v2.0.0's commit message
Stable version 2.0.0.

v2.0.0-rc1

Toggle v2.0.0-rc1's commit message
First Release Candidate of 2.0.0.

v2.0.0-beta8

Toggle v2.0.0-beta8's commit message
Eigth beta version of 2.0.0.