Skip to content

forgejo: stepwise upgrade 9.0.3 -> 15.0.0

jedmund requested to merge forgejo-upgrade into main

Created by: jedmund

Summary

Upgrades the Forgejo instance on nuc from 9.0.3 (EOL) to 15.0.0 via six sequential major bumps. Switches forgejo_image from the floating :9 tag to an explicit version pin so future upgrades are deliberate.

Why

  • Running 9.0.3 left the instance six majors behind current stable (15.0.0)
  • Forgejo only supports the two newest majors plus LTS; 9.x dropped off support long ago
  • Upgrading one major at a time lets each version's DB migrations run cleanly

What's in this branch

Seven commits, each a single-line change to roles/development/defaults/main.yml:

  1. 991b11c pin to 9.0.3 (baseline — replace floating :9 tag)
  2. ae56ffd bump 9.0.3 → 10
  3. 3c4a951 bump 10 → 11
  4. 5b358e4 bump 11 → 12
  5. 7c32fbb bump 12 → 13
  6. 84c71c4 bump 13 → 14
  7. 95a91cb final pin to 15.0.0

Test plan

  • Full volume + pg_dump backup taken before starting (~/backups/forgejo-20260423-095523/ on nuc)
  • Each step deployed via make deploy-dev and verified:
    • container comes up, Postgres healthy
    • forgejo --version reports the expected version
    • startup logs show no errors/fatals
    • DB migrations ran cleanly (final Forgejo schema at v44)
  • Post-upgrade forgejo doctor check --all --fix run on 15.0.0 — all 28 checks passed
  • Release notes reviewed for each major (v10–v15) for breaking changes; no matching config changes needed in forgejo.env.j2
  • Merge blocked until DB-representation banner + activity-feed duplication are resolved (tracking separately; unrelated to image bumps)

Known follow-ups (not blocking this PR)

  • "Database representation out of synchronization" banner still shown on some repos after doctor fix — needs branch-table resync or a push per repo
  • Activity feed shows some events 3–6× in the UI despite action table having only 6 excess rows — needs deeper investigation

Merge request reports

Loading