ci(release): port release automation off release-please to the tier-kit git-cliff flow #114
Labels
No labels
area: arcade
area: art-studio
area: calendar
area: chapel
area: content
area: design
area: field-guide
area: infra
area: library
area: os
area: portal
area: sync
area: typing
blocked
breaking
bug
content: approved
content: changes-requested
content: drafting
content: needs-doctrinal-review
content: needs-review
dependencies
documentation
duplicate
enhancement
epic
github_actions
good first issue
help wanted
invalid
javascript
needs-triage
priority: high
priority: low
priority: medium
question
type: enhancement
type: feature
type: fix
type: perf
type: security
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
Bosco/bosco#114
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
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's wrong
release-please / release-please (push)fails on every push todevelop. It has never succeeded on this Forgejo instance, and it never will.This is not a regression and not a token problem. It is an unfinished migration.
Why
This repo was imported from GitHub on 2026-07-11 — Forgejo still records
original_url = https://github.com/BoscoApp/bosco.git. It came across with its GitHub release automation intact and nobody ported it:.github/workflows/release-please.yml(targetsdevelop,googleapis/release-please-action@v4)release-please-config.json(release-type: node,package-name: bosco,bump-minor-pre-major: true).release-please-manifest.json(0.3.0)Everything that looks like release-please working here is imported history.
v0.1.0andv0.2.0show their author asGhost— Forgejo's placeholder for an unmapped GitHub actor, i.e.github-actions[bot]on the old host. Therelease-please--branches--develop--components--boscobranch is likewise imported; its head commitf3d22f25 chore(develop): release 0.3.0is dated 2026-07-12 but was authored on GitHub.v0.3.0(2026-07-18) was cut by hand — its author ismanlycucumber, not a bot.The workflow sets no
github-api-url, so it authenticates a Forgejo token againstapi.github.comand getsBad credentials — docs.github.com/rest. Repointing the REST base URL would not save it either: release-please's commit, PR and release iterators are GraphQL queries, and Forgejo exposes no GraphQL endpoint at all (/api/graphql,/graphqland/api/v1/graphqlall 404 while/api/v1/versionreturns 200).What to do instead
The estate already answered this.
manlycucumber/tier-kitshipscliff.tomland.forgejo/workflows/release.yml, whose own header reads "Forgejo Full-tier release automation (replaces GitHub release-please)".manlycucumber/arxruns it today. This repo has no.forgejo/workflowsdirectory at all.The port:
cliff.tomland.forgejo/workflows/release.ymlfrom the tier-kit..github/workflows/release-please.yml,release-please-config.json,.release-please-manifest.json.Two things that will bite
on: push: branches: [main]. This repo releases fromdevelop(that is whattarget-branch: developmeans in the current config). Either retarget the workflow todevelopor decide thatmainbecomes the release branch — a real choice, not a find-and-replace, becausemainis currently behind and branch protection is applied.RELEASE_TOKENis not set. The workflow needs a repo or org secretRELEASE_TOKEN— a Forgejo token withwrite:repositorybelonging to the maintainer.GET /repos/Bosco/bosco/actions/secretscurrently returns none. If the release branch is protected, whitelist that user for push in the protection rule.State at time of writing (2026-08-03)
ci / ci (push)on13c85aa8is green — the first successful CI run this repo has ever had, after the Forgejo Actions mirror fault was fixed on jerome at 14:36 today (DEFAULT_ACTIONS_URLpointed atdata.forgejo.org, which mirrors onlyactions/*, so every third-partyuses:404'd and every job died at "Set up job").release-please / release-please (push)is the only remaining red check, and it fails in 3 seconds onBad credentials.So the only thing standing between this repo and an all-green develop is this migration.
Evidence for the decision, from a live run rather than from reasoning about it.
Bosco/boscorun 52 (task 2233, 2026-08-03 14:44), with the action mirror fixed so the action itself now fetches cleanly from github.com:It reads the repo fine — it fetched the config and the manifest off
develop— and then dies asking api.github.com for the release history.Bad credentialsis not a token that needs rotating: it is the wrong service. release-please is an Octokit client against GitHub's REST/GraphQL API, and no Forgejo token will ever satisfy it.So this is not "works but misconfigured". It cannot work here, and every push to
developwill keep failing this check until the workflow is gone.Scope is wider than this repo. Seven still carry
release-please.yml:Bosco/bosco(this issue)Imaginook/Imaginook(#831 there)Directorium/Api,Directorium/Core,Directorium/Ordo,Directorium/Site3MI/OrdoThe four Directorium repos and
3MI/Ordohave no issue filed. The Directorium ones only trigger onmain, so they are quiet today and will fail the moment anything is promoted.The estate already has the answer in
manlycucumber/tier-kit: the Full tier ships a git-cliffrelease.ymlpluscliff.toml, which is Forgejo-native. Porting is a copy of that, not a design.One caveat before copying:
tier-kit's ownrelease.ymlhas been red onmainsince 2026-07-20, as hasarx's. Worth confirming the canonical one actually passes before it is propagated to seven repos.Pre-port check cleared for this repo
tier-kit#8 asks that the wrapped-subject count check be run against a repo's history before porting it, because a repo carrying hard-wrapped commit subjects produces a first release that silently under-reports — no warning, no signal in the job output, and a shorter changelog reads as "a quiet release" rather than as a fault.
Ran it against
Bosco/bosco. Clear.develop7e8ad847 Initial empty repository, the root commitv0.3.0(8 commits since)The 31 multi-line bodies matter: they are what shows the check was genuinely exercised rather than matching nothing. Method, the control run against arx, and the full results for all seven repos are in tier-kit#8.
So the silent-drop hazard does not apply here, and it does not gate this port. The two obstacles named in the issue body above are unaffected and remain the real work:
develop; the tier-kit workflow fireson: push: branches: [main]. Still a genuine decision, not a find-and-replace.RELEASE_TOKENis unset — still returns no secrets.One thing the check did surface that is worth knowing when the first git-cliff release is cut here:
v0.3.0was tagged by hand and there are 8 commits after it, so the first automated run will compute its bump from those 8 alone.