Skip to content

Forge support

What colophon has been run against, verb by forge. A cell is ticked only when a run against the real forge passed, and it links that run. Anything else says why. The integration suite is in test/integration and runs on demand with INT_TEST_FORGE=1 and the forge's token.

forge plan propose publish release announce apply its own CI
GitLab ✓ ✓ suite ✓ suite ✓ suite ✓ suite ✓ suite ✓ GitLab CI, the cicd component; colophon releases itself with it
GitHub ✓ ✓ suite ✓ suite ✓ suite ✓ suite ✓ suite ✓ GitHub Actions, propose, tag, release
Gitea ✓ ✓ suite ✓ suite ✓ suite ✓ suite ✓ suite ✓ Gitea Actions with act_runner, the suite's CI run
Forgejo ✓ ✓ suite ✓ suite ✓ suite ✓ suite ✓ suite ✓ Forgejo Actions with forgejo-runner, the suite's CI run
Codeberg ✓ ✓ suite ✓ suite ✓ suite ✓ suite ✓ suite not yet run
Bitbucket Cloud ✓ ✓ suite tags only, suite not possible not run not run not yet run
  • plan writes nothing and reads only the checkout, so it works on any forge.
  • Gitea and Forgejo were run as Gitea 1.24.7 and Forgejo 11.0.16, which the suite starts in containers. Codeberg reported Forgejo 16.0.0-dev.
  • Their own CI is TestReleasingInTheForgesOwnCI, run on 2026-10-24. It registers act_runner 0.6.1 or forgejo-runner 13.2.0 with the forge, commits the workflows in Run it in Gitea or Forgejo Actions, and lets them propose, tag and release with colophon v0.19.2, merging only the pull request itself. The runner is in a container on the same machine and is removed afterwards, so there is no run page to link.
  • Bitbucket Cloud has no release object. publish pushes the annotated tag and reports releases as unsupported, and release has nothing to create. Announcing and commenting were not run there, because the lifecycle test that runs them also needs a release and labels.
  • The suite's GitLab and GitHub run also checked the commit and release links in the notes against the URL each forge's API gives the same object. Gitea, Forgejo and Codeberg were checked the same way. Bitbucket's commit links were checked for their path only.
  • Compare links were checked on 2026-10-24 by TestASecondReleaseLinksItsCompare, which releases twice because a first release has none. On GitHub the link is the address GitHub's compare API gives. On GitLab it is the same route, with the tags by name where the API resolves them to commits. On Gitea and Forgejo, which give no address, the page itself was fetched from the suite's public test project. On Codeberg the API answered for the same range. Bitbucket's were not checked: its test project is private and no Bitbucket API gives a compare page's address.

Codeberg and the self-hosted forges limit what a run can do; see what colophon needs from a pipeline for the token scopes and Codeberg's releases switch. Codeberg also refuses a third similarly named pull request within an hour, so run one test an hour against it.