Android / Build, or is the channel already serving this? (push) Successful in 3s
CI & Build / Python lint (push) Successful in 2s
CI & Build / Build now, or wait for Android? (push) Successful in 2s
Desktop (Tauri) / Build, or is the channel already serving this? (push) Successful in 2s
CI & Build / Web typecheck and unit tests (push) Successful in 12s
CI & Build / Python tests (push) Successful in 23s
Android / Core and FFI clippy and tests (push) Successful in 51s
CI & Build / integration (push) Successful in 1m49s
CI & Build / Build & push image (push) Skipped
Desktop (Tauri) / Web tests, clippy, Rust tests and rustfmt (push) Successful in 2m20s
Desktop (Tauri) / Windows installer (cross-compiled) (push) Successful in 3m6s
Desktop (Tauri) / Tauri desktop (Linux) (push) Successful in 3m46s
Desktop (Tauri) / Update manifest (push) Successful in 3s
Android / Kotlin + Rust (APK) (push) Successful in 8m31s
Android / Build the server image (push) Successful in 1s
#6225 "Comment standard sweep: root, config, CI workflows, docs and packaging", milestone 546 "Bring the repo to the comment standard (rule 32) and compose defaults (rule 198)". - README restructured in newcomer order: what it is, quick start, configuration, setup pitfalls, updating and backups, features, troubleshooting, development, licence. Its quick-start compose carries no restart policy. - Dockerfile and .env.example trimmed to one or two lines per setting. - Workflows, packaging scripts and docs lose issue, run, note, rule and milestone references and their history narration. Comments that still described path filters and "step 6" as future work now state what the workflows do. - ci-requirements.md rewritten against the current workflows. It said the build gated on typecheck and lint only, the integration lane did not gate, a v* tag published :latest, and ci-tauri lacked bsdtar and zstd; none of those is true now (the last checked against run 9630's log). - Echo strings in guard-forward.sh and version.sh drop their note citations; every string a test asserts on is unchanged. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
69 lines
2.8 KiB
YAML
69 lines
2.8 KiB
YAML
name: Release
|
|
|
|
# A RELEASE BUILDS NOTHING. That is the whole point of this lane.
|
|
#
|
|
# The merge to `main` already published everything a user can receive: the server
|
|
# image as `:latest` + `:<sha>`, the desktop bundles and the APK to the `stable`
|
|
# channel, and the updater manifest that advertises them. A tag rebuilding that same
|
|
# source would produce identical artifacts under identical names, and would re-push
|
|
# `:<sha>`, which a published tag never allows.
|
|
#
|
|
# So the tag is a BOOKMARK, and this lane gives it the only job it has left: saying
|
|
# what was in it. There are two halves to "what am I running", and
|
|
# the version answers only the first:
|
|
#
|
|
# which build is this? the footer, /api/config, the APK's versionName
|
|
# what changed since the one ← this
|
|
# I was running last month?
|
|
#
|
|
# This lane never cuts a tag; it only responds to one.
|
|
#
|
|
# THE TAG IS NOT AN IMAGE TAG and never becomes one. `ci.yml` does not trigger on
|
|
# tags at all. The image is addressed by channel or by commit; the release by date.
|
|
# Same string as the artifact version (`vYYYY.MM.DD.HHMM`), different
|
|
# system.
|
|
|
|
on:
|
|
push:
|
|
tags: ["v*"]
|
|
|
|
permissions:
|
|
contents: write
|
|
|
|
jobs:
|
|
notes:
|
|
name: Write the changelog
|
|
runs-on: python-ci
|
|
container:
|
|
image: git.fabledsword.com/bvandeusen/ci-python:3.14
|
|
steps:
|
|
- uses: actions/checkout@v6
|
|
with:
|
|
# The whole history AND every tag: the notes are the commit range between
|
|
# this tag and the previous `v*` one, and neither end exists in a shallow
|
|
# clone. A depth-limited checkout here does not fail — it produces a
|
|
# shorter changelog, which is the kind of wrong nobody notices.
|
|
fetch-depth: 0
|
|
|
|
- name: Publish the release notes
|
|
env:
|
|
GITHUB_TOKEN: ${{ github.token }}
|
|
run: |
|
|
notes="$(sh packaging/release-notes.sh "$GITHUB_REF_NAME")"
|
|
echo "$notes"
|
|
echo "---"
|
|
|
|
# JSON-escaped HERE rather than in publish-release.sh, which cannot assume
|
|
# python3 is on PATH in the three images that call it. `json.dumps` then
|
|
# strip the surrounding quotes — the script supplies those.
|
|
RELEASE_BODY_JSON="$(printf '%s' "$notes" \
|
|
| python3 -c 'import json,sys; print(json.dumps(sys.stdin.read())[1:-1])')"
|
|
export RELEASE_BODY_JSON
|
|
|
|
# Through publish-release.sh for its create-or-PATCH-on-409 path: a
|
|
# release that is only ever POSTed keeps whatever body its first run
|
|
# wrote, so re-tagging or re-running must rewrite it. No bundles
|
|
# exist in this workspace, so its asset globs match nothing and it
|
|
# uploads none — which is the intended behaviour, not a side effect.
|
|
RELEASE_TAG="$GITHUB_REF_NAME" bash desktop/packaging/publish-release.sh
|