8 Commits
Author SHA1 Message Date
Dylan M. Taylor 8e9b8b96c5 fix: support rpm 4.20+ signing and pin release job to ubuntu-24.04 (#175)
* fix(draft-release): use rpmsign --resign to support RPM 4.20+

* fix(release): run Draft GitHub Release on ubuntu-24.04
2026-11-07 20:48:33 -05:00
Dylan M. Taylor 2f46576245 feat: allow uploading assets to an existing published release (#164) (#165)
Add allow-published (default false) to draft-release. When true, draft-release
permits uploading assets to an existing published release without failing or
attempting to convert it to a draft with --draft.
2026-11-06 20:40:48 -05:00
Dylan M. Taylor 489222f309 feat: optionally retain existing draft release assets (#160) 2026-11-06 19:24:50 -05:00
Dylan M. Taylor dd3d987521 feat: allow a custom draft release tag prefix (#159) 2026-11-06 16:06:01 -05:00
Dylan M. Taylor 96b8516a40 feat(release): sign every Linux package format with LINUX_SIGNING_KEY
A new optional LINUX_SIGNING_KEY secret (an unprotected OpenPGP signing subkey, from the
release environment) signs each Linux format the way its tools check it:

- rpm: embedded signature (rpmsign), for `rpm -K` and dnf/zypper gpgcheck
- deb: embedded _gpgorigin member (debsigs) and a detached .asc
- Arch: <file>.sig, which pacman looks for
- AppImage, tar.gz, zsync: detached .asc
- Flatpak bundle: signed commit and embedded public key (flatpak-bundle.sh, via the
  scaffold's new step 4), so `flatpak install` verifies it, plus a detached .asc
- Flatpak OCI image: a containers/image signature for ghcr.io/<repo>@<digest>, which Flatpak
  checks from its signature lookaside; the flatpak job records the pushed manifest for it
- SHA256SUMS.txt.asc over every release asset, and release-signing-key.asc

The draft-release action signs before computing checksums (embedded signatures change the rpm
and deb files) and verifies every signature against the exported public key. The new
import-signing-key action is shared by the flatpak and release jobs and refuses a key that
needs a passphrase. Without the secret, releases are published unsigned with a warning.
2026-11-02 20:55:58 -05:00
Dylan M. Taylor d04f2a42da security(release): keep app-title and version metadata out of shell source (#47)
draft-release and resolve-version interpolated caller-provided metadata directly
into Bash source (CWE-78):

- draft-release embedded app-title into the `title=` assignment in the step that
  has GH_TOKEN available.
- resolve-version embedded input-version into a `v=` assignment before it was
  validated, and app-title into the job-summary `echo`.

Both inputs now travel through the step `env:` and are read with quoted variable
expansions; the version is validated before it is used to produce outputs, and
the summary is written with a fixed `printf` format. No change to outputs or
release behavior.
2026-10-22 11:40:30 -04:00
Dylan M. Taylor d8fa439ab1 chore: pin external actions to full commit SHAs and upgrade to Node 24 actions 2026-10-11 09:12:53 -04:00
Dylan M. Taylor b5b90efb3b Initial commit: Reusable workflows and composite actions for ArtCraft apps 2026-10-11 07:51:06 -04:00