Repository navigation
Tags: Secretchronicles/TSC
Tags
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.
PreviousNext