fix: bump APP_INI_VERSION to v23 (app.ini.tmpl changed in the forgejo removal) #6

Closed
autonomic-bot wants to merge 0 commits from fix-app-ini-version into main
Owner

Bumps APP_INI_VERSION v22 → v23.

app.ini.tmpl changed in BREAKING CHANGE: remove forgejo (6a0339d):

-{{ if or (eq (env "FORGE") "forgejo") (eq (env "GITEA_LFS_START_SERVER") "true") }}
+{{ if (eq (env "GITEA_LFS_START_SERVER") "true") }}
 LFS_JWT_SECRET = {{ secret "lfs_jwt_secret" }}

…but abra.sh kept APP_INI_VERSION=v22, and 3.6.2+1.27.1-rootless shipped that way. Swarm
configs are immutable, so upgrading any existing deployment whose config is already _v22
(i.e. anything on 3.6.0/3.6.1) aborts:

INFO initialising deployment
FATA failed to update config <stack>_app_ini_v22: Error response from daemon:
     rpc error: code = InvalidArgument desc = only updates to Labels are allowed

Reproduced on a live 3.6.1+1.26.2-rootless3.6.2+1.27.1-rootless upgrade. This blocks
existing installs from taking 3.6.2, which carries the 1.27.1 security fixes
(CVE-2026-60004, CVE-2026-59774).

Bumping to v23 makes Swarm create a new config object instead of mutating v22; the orphaned
_v22 object can be pruned after rollout. Only app.ini.tmpl changed, so
DOCKER_SETUP_SH_VERSION and PG_BACKUP_VERSION are untouched.

Bumps `APP_INI_VERSION` v22 → v23. `app.ini.tmpl` changed in `BREAKING CHANGE: remove forgejo` (`6a0339d`): ```diff -{{ if or (eq (env "FORGE") "forgejo") (eq (env "GITEA_LFS_START_SERVER") "true") }} +{{ if (eq (env "GITEA_LFS_START_SERVER") "true") }} LFS_JWT_SECRET = {{ secret "lfs_jwt_secret" }} ``` …but `abra.sh` kept `APP_INI_VERSION=v22`, and `3.6.2+1.27.1-rootless` shipped that way. Swarm configs are immutable, so upgrading any existing deployment whose config is already `_v22` (i.e. anything on 3.6.0/3.6.1) aborts: ``` INFO initialising deployment FATA failed to update config <stack>_app_ini_v22: Error response from daemon: rpc error: code = InvalidArgument desc = only updates to Labels are allowed ``` Reproduced on a live `3.6.1+1.26.2-rootless` → `3.6.2+1.27.1-rootless` upgrade. This blocks existing installs from taking 3.6.2, which carries the 1.27.1 security fixes (CVE-2026-60004, CVE-2026-59774). Bumping to v23 makes Swarm create a new config object instead of mutating v22; the orphaned `_v22` object can be pruned after rollout. Only `app.ini.tmpl` changed, so `DOCKER_SETUP_SH_VERSION` and `PG_BACKUP_VERSION` are untouched.
autonomic-bot added 1 commit 2026-08-10 16:48:54 +00:00
Docker Swarm configs are IMMUTABLE — only labels can be updated. The config is
named ${STACK_NAME}_app_ini_${APP_INI_VERSION}, so when app.ini.tmpl's rendered
content changes the version suffix MUST be bumped, otherwise abra tries to mutate
the existing object and the deploy aborts:

  FATA failed to update config <stack>_app_ini_v22: Error response from daemon:
  rpc error: code = InvalidArgument desc = only updates to Labels are allowed

'BREAKING CHANGE: remove forgejo' (6a0339d) edited app.ini.tmpl —

  -{{ if or (eq (env "FORGE") "forgejo") (eq (env "GITEA_LFS_START_SERVER") "true") }}
  +{{ if (eq (env "GITEA_LFS_START_SERVER") "true") }}

— but left APP_INI_VERSION at v22 (unchanged since the LFS commit 357926f), and
3.6.2+1.27.1-rootless shipped that way. Every existing deployment upgrading ACROSS
the forgejo removal therefore fails at 'initialising deployment'; reproduced on a
live 3.6.1+1.26.2-rootless -> 3.6.2+1.27.1-rootless upgrade.

Bumping to v23 makes Swarm create a NEW config object instead of mutating v22. The
orphaned v22 object can be pruned after the rollout. Only app.ini.tmpl changed, so
DOCKER_SETUP_SH_VERSION and PG_BACKUP_VERSION stay put.

Note: cc-ci's upgrade tier did not catch this because it resolved the upgrade base
to main-tip, which ALREADY contains the forgejo removal — base and head then render
identical app.ini and no config update is attempted. Real deployments upgrade from
the last published RELEASE (3.6.1+1.26.2), which is where the break appears.
Author
Owner

!testme

!testme
Author
Owner

🌻 cc-cigitea @ a5ce46f2 passed

cc-ci result card

level

full logs · dashboard

<!-- cc-ci:testme --> 🌻 **cc-ci** — `gitea` @ `a5ce46f2` ✅ **passed** [![cc-ci result card](https://ci.commoninternet.net/runs/1229/summary.png)](https://drone.ci.commoninternet.net/recipe-maintainers/cc-ci/1229) [![level](https://ci.commoninternet.net/runs/1229/badge.svg)](https://drone.ci.commoninternet.net/recipe-maintainers/cc-ci/1229) [full logs](https://drone.ci.commoninternet.net/recipe-maintainers/cc-ci/1229) · [dashboard](https://ci.commoninternet.net/)
autonomic-bot force-pushed fix-app-ini-version from a5ce46f2a3 to 852717d212 2026-08-10 16:52:11 +00:00 Compare
Author
Owner

!testme

!testme
Author
Owner

🌻 cc-cigitea @ 852717d2 passed

cc-ci result card

level

full logs · dashboard

<!-- cc-ci:testme --> 🌻 **cc-ci** — `gitea` @ `852717d2` ✅ **passed** [![cc-ci result card](https://ci.commoninternet.net/runs/1230/summary.png)](https://drone.ci.commoninternet.net/recipe-maintainers/cc-ci/1230) [![level](https://ci.commoninternet.net/runs/1230/badge.svg)](https://drone.ci.commoninternet.net/recipe-maintainers/cc-ci/1230) [full logs](https://drone.ci.commoninternet.net/recipe-maintainers/cc-ci/1230) · [dashboard](https://ci.commoninternet.net/)
Author
Owner

Auto-closed by /recipe-upgrade: its changes are already in upstream main (merged upstream); mirror main re-synced

Auto-closed by /recipe-upgrade: its changes are already in upstream main (merged upstream); mirror main re-synced
autonomic-bot closed this pull request 2026-08-11 04:30:12 +00:00

Pull request closed

Please reopen this pull request to perform a merge.
Sign in to join this conversation.
No Reviewers
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: recipe-maintainers/gitea#6