forgejo: stepwise upgrade 9.0.3 -> 15.0.0
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:
-
991b11cpin to 9.0.3 (baseline — replace floating:9tag) -
ae56ffdbump 9.0.3 → 10 -
3c4a951bump 10 → 11 -
5b358e4bump 11 → 12 -
7c32fbbbump 12 → 13 -
84c71c4bump 13 → 14 -
95a91cbfinal pin to 15.0.0
Test plan
-
Full volume + pg_dump backup taken before starting ( ~/backups/forgejo-20260423-095523/onnuc) -
Each step deployed via make deploy-devand verified:- container comes up, Postgres healthy
-
forgejo --versionreports the expected version - startup logs show no errors/fatals
- DB migrations ran cleanly (final Forgejo schema at v44)
-
Post-upgrade forgejo doctor check --all --fixrun 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
actiontable having only 6 excess rows — needs deeper investigation