diff --git a/.github/labeler.yml b/.github/labeler.yml index 2328070..acb71bc 100644 --- a/.github/labeler.yml +++ b/.github/labeler.yml @@ -11,7 +11,9 @@ "scope:runner": - changed-files: - any-glob-to-any-file: - ["commands/runner-*.sh", "commands/lib/runner-config.sh"] + ["commands/runner-*.sh", "commands/lib/runner-config.sh", + "commands/forgejo-runner-*.sh", "commands/lib/forgejo-runner-config.sh", + "docs/templates/ci-box/**"] "scope:coolify": - changed-files: - any-glob-to-any-file: ["commands/coolify-*.sh"] diff --git a/.github/labels.conf b/.github/labels.conf index 94167b5..ef6116e 100644 --- a/.github/labels.conf +++ b/.github/labels.conf @@ -2,7 +2,7 @@ panel=claude-bot-andresmgsl codex-bot-andresmgsl grok-bot-andresmgsl kimi-bot-an triage-actors=dan-claude-bot scope:bootstrap|C5DEF5|bootstrap — hardening a pristine server into a node scope:users|C5DEF5|users-* — class model, apply/status, close-root -scope:runner|C5DEF5|runner-* — GitHub runner lifecycle +scope:runner|C5DEF5|runner-* / forgejo-runner-* — CI runner lifecycle, either forge scope:coolify|C5DEF5|coolify-* — Coolify and backup install scope:db|C5DEF5|db.sh — dump/restore scope:installer|C5DEF5|install.sh — how rig lands on a machine diff --git a/README.md b/README.md index 38ed5bb..ffd76ef 100644 --- a/README.md +++ b/README.md @@ -1174,6 +1174,28 @@ FORGEJO__actions__ENABLED=true FORGEJO__actions__DEFAULT_ACTIONS_URL=https://code.forgejo.org ``` +> **`DEFAULT_ACTIONS_URL` is a single fallback, and rig's own workflows need +> two origins.** It decides where a *bare* `uses: owner/repo@ref` resolves. +> Measured: +> +> | reference | count in `.github/workflows/` | `code.forgejo.org` | +> |---|---|---| +> | `actions/checkout@v4` | 3 | **200** — mirrored | +> | `heavy-duty/ceremony/...@0.3.0` | 8 | **404** — lives on this Forgejo instead | +> +> So with the value above, every ceremony guard (`changelog-armed`, +> `changelog-monotonic`, `changelog-assembled`, `drill-recorded`, +> `runner-isolated`, `docs-sync`, and the release/labels callers) fails to +> resolve the moment rig's CI actually runs on the forge. +> +> Forgejo accepts an absolute URL per step, so one side has to be explicit — +> which one is a **decision this PR does not make**. Either set the default to +> this instance and make the three `actions/*` references absolute +> (`uses: https://code.forgejo.org/actions/checkout@v4`), or keep the value +> above and make the eight ceremony references absolute. Until that lands, +> **rig's CI is not expected to run on Forgejo** — `rig forgejo-runner` is for +> running *your* repositories' workflows, and does not depend on this. + > **A registry served from Forgejo needs one more.** `RIG_TEMPLATES_HOST` > (below) lets the template registry live on any forge, but the mint-time fetch > is **unauthenticated by contract** — box auto-runs `rig bootstrap -box` diff --git a/commands/forgejo-runner-install.sh b/commands/forgejo-runner-install.sh index f6ce3d6..e3a6fb5 100755 --- a/commands/forgejo-runner-install.sh +++ b/commands/forgejo-runner-install.sh @@ -33,6 +33,55 @@ die() { printf 'rig-forgejo-runner: ERROR: %s\n' "$1" >&2; exit "${2:-1}"; } # from a shared CI server, and inside a box that boundary is already paid for. DEFAULT_LABELS='ubuntu-latest:docker://ghcr.io/catthehacker/ubuntu:act-22.04,docker:docker://node:22-bookworm' +# fetch_and_verify_sha256