every.channel/evolution/proposals/ECP-0080-forgejo-primary-and-mirror-hosting.md

1.7 KiB

ECP-0080: Forgejo-Primary Git Hosting With Mirror-Only Codeberg/GitHub

Status: Implemented

Context

Repository governance and CI are currently coupled to Codeberg-specific defaults in scripts and workflows. We want Forgejo to be the primary host for development and automation, while keeping Codeberg and GitHub as mirror endpoints only.

Decision

  1. Adopt Forgejo as the primary git/actions host.
  2. Treat Codeberg and GitHub as push mirrors.
  3. Disable actions on Codeberg mirror repositories.
  4. Make workflow API calls host-agnostic by using runtime server/repository context instead of hardcoded Codeberg URLs.
  5. Add first-party scripts for:
    • setting primary + mirror remotes,
    • pushing mirrors,
    • toggling repository actions via Forgejo/Gitea API.
  6. Update Forge scripts/docs so host/token defaults point to Forgejo first, with compatibility fallbacks for existing codeberg-token.age.

Alternatives considered

  • Keep Codeberg as the primary host and only tune runners. Rejected because the operational target is Forgejo-first ownership.
  • Maintain duplicate active CI on all hosts. Rejected because it doubles cost/noise and risks divergent automation behavior.
  • Manually manage remotes and repo settings per developer. Rejected because migration drift is likely without repeatable scripts.

Rollout / teardown plan

  • Rollout:
    • merge workflow/script/doc updates,
    • configure local remotes to Forgejo primary + mirror remotes,
    • disable Codeberg actions with the new repository toggle script.
  • Teardown:
    • re-enable actions on Codeberg via the same toggle script,
    • point primary remote back to Codeberg if needed,
    • revert workflow host-context changes if a single-host lock-in is required.