ci(installer): add pr-checks, release, and project-tree sync workflows #1
Reference in New Issue
Block a user
No description provided.
Delete Branch "ci/add-workflows"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
What & why
Brings this repo's CI to parity with the other Runic Gateway repos. All three workflows are retargeted from
RunicGateway/link, the closest analog — same Rust toolchain, same release engine, same runner..gitea/workflows/pr-checks.ymlmainoncargo fmt --check,clippy -D warnings,cargo test --locked— one job, same order as the release's own gates, so a green PR implies a green release..gitea/workflows/release.ymllink/, Rust adapter retargeted: crate at the repo root, binaryrunicgateway-installer, cross-compiled for x86_64 Linux + Windows. Artifact names follow PLAN.md §3..gitea/workflows/sync-project-tree.yml+.gitea/scripts/gen_tree.pydocs/installer/PROJECT_TREE.mdon push tomainand opens/force-updates a PR against the docs repo. Verbatim fromlink/apart from the repo/path/label env block.Two deliberate changes from the
linkoriginals:1. The crate guard. This repo has no Cargo project yet — Phase 1 creates it. Landing the Rust workflows unguarded would red-X every governance and docs PR until then; holding them back leaves the repo ungated exactly while its conventions are being set. So both check for a root
Cargo.tomlfirst:pr-checksskips its gates with a notice, andrelease.yml's plan step setsRELEASE=falseand exits 0. Both arm themselves the momentCargo.tomllands, with no edit here.2. Checksum instructions in the generated changelog. Installer releases are deliberately unsigned and
SHA256SUMSis the trust anchor (PLAN.md §3), so the verify commands for both OSes are rendered into every release body rather than living in a doc an operator has to go find.The crate is expected at the repo root, not a subdirectory like
link/sidecar— this repo's sole product is the one installer binary, so there's nothing to namespace it against.How it was tested
Locally, before pushing:
yaml.safe_load).run:block extracted and passedbash -n(18 blocks).release.yml's plan step simulated against a throwaway git repo:Cargo.toml→release=false, exit 0, no other step runs;Cargo.toml+ onefeat:commit → first-release path,version=0.1.0,tag=v0.1.0, changelog rendered correctly including the verification block.gen_tree.pyrun against this repo's tracked files — renders the expected tree.This PR is also the first exercise of
pr-checks.ymlitself, which is what the enforcement note in its header needs: Gitea only offers a status-check context in the branch-protection dropdown after it has reported once.Setup still required
release.ymlandsync-project-tree.ymlneedREGISTRY_USER/REGISTRY_TOKENconfigured for this repo (Settings → Actions → Secrets) —write:repositoryhere, plus read/write onRunicGateway/docsfor the tree sync. I can't read this repo's secrets with my token, so if they aren't inherited from the org they'll need adding before the first merge tomain.Not included
The bundle-manifest workflow and the release-dispatch hook (PLAN.md §7) — those are Phase 0 item 3 and depend on
servuo-pluginsgaining a release workflow first.Checklist
AI-assisted contributions (required)
Claude Code (Claude Opus 5). Every change has been reviewed and is understood. AI-authored commits are marked with aCo-Authored-Bytrailer.License