Please adhere to versioning scheme for container upgrades #120
Open
opened 2026-08-27 09:29:29 +00:00 by stevensting
·
13 comments
No Branch/Tag Specified
main
renovate/docker.elastic.co-elasticsearch-elasticsearch-9.x
semver_details
nextcloud-metrics
trusted-domains
update_33.0.8
renovate/pgautoupgrade-pgautoupgrade-18.x
pr-15.2.0+34.0.2-fpm
pr-14.1.0+33.0.7-fpm
pr-14.2.0+33-fpm
pr-15.1.0+34.0.2-fpm
pr-15.0.0+34.0.2-fpm
pr-14.0.1+33.0.7-fpm
feat/check-major-upgrade
pr-14.0.0+33-fpm
temp
fix/nginx-conf-config-name
pr-13.2.0+32-fpm
upload-limit
feature/imaginary
kc_stable
nextcloud-v28
add-theming-v28.0.5
add-theming
update-nginx-conf
split-bbb-onlyoffice-compos
split-onlyoffice-bbb-config
authentik_sso
healthchecks
occ_cmds
auto_app_install
embed_nextcloud_in_iframe
auto_configure_sso
add-postgres-db
14.1.1+33.0.8-fpm
14.1.0+33.0.7-fpm
14.0.1+33.0.7-fpm
14.0.0+33.0.7-fpm
13.2.0+32-fpm
13.1.5+32.0.13-fpm
13.1.4+32.0.13-fpm
13.1.3+32.0.13-fpm
13.1.2+32.0.13-fpm
13.1.1+32.0.12-fpm
13.1.0+32.0.11-fpm
13.0.1+32.0.3-fpm
13.0.0+32.0.3-fpm
12.1.0+31.0.6-fpm
12.0.1+31.0.6-fpm
12.0.0+31.0.6-fpm
11.4.0+30.0.6-fpm
11.4.0+30.0.10-fpm
11.3.0+30.0.6-fpm
11.2.0+30.0.6-fpm
11.1.0+30.0.6-fpm
11.0.1+30.0.4-fpm
11.0.0+30.0.4-fpm
10.0.0+30.0.4-fpm
9.2.0+29.0.8-fpm
6.0.11+28.0.10-fpm
6.0.10+28.0.10-fpm
6.0.9+28.0.10-fpm
9.1.2+29.0.5-fpm
6.0.8+28.0.5-fpm
6.0.7+28.0.5-fpm
9.1.0+29.0.5-fpm
9.0.0+29.0.5-fpm
6.0.6+28.0.5-fpm
8.0.1+29.0.3-fpm
8.0.0+29.0.1-fpm
7.0.3+29.0.1-fpm
6.0.5+28.0.5-fpm
7.0.2+29.0.1-fpm
7.0.1+29.0.1-fpm
7.0.0+29.0.0-fpm
6.0.4+28.0.5-fpm
6.0.3+28.0.5-fpm
6.0.2+28.0.5-fpm
5.0.3+27.0.1-fpm
6.0.1+28.0.2-fpm
6.0.0+28.0.1-fpm
5.2.0+27.1.5-fpm
5.1.1+27.1.5-fpm
5.1.0+27.1.3-fpm
5.0.2+27.0.1-fpm
5.0.1+27.0.1-fpm
5.0.0+27.0.0-fpm
4.0.7+26.0.2-fpm
4.0.6+26.0.2-fpm
4.0.5+26.0.2-fpm
4.0.4+26.0.2-fpm
4.0.3+26.0.2-fpm
4.0.2+26.0.2-fpm
4.0.1+26.0.1-fpm
4.0.0+26.0.1-fpm
3.3.2+25.0.6-fpm
3.3.1+25.0.5-fpm
3.3.0+25.0.5-fpm
3.2.0+25.0.4-fpm
3.1.2+25.0.4-fpm
3.1.1+25.0.1-fpm
3.1.0+25.0.1-fpm
3.0.1+25.0.1-fpm
3.0.0+25.0.1-fpm
2.1.4+24.0.6-fpm
2.1.3+24.0.5-fpm
2.1.2+24.0.3-fpm
2.1.1+24.0.2-fpm
2.1.0+24.0.0-fpm
2.0.0+23.0.4-fpm
1.0.0+23.0.1-fpm
No labels
Milestone
No items
No Milestone
Assignees
3wordchant
aadil (Aadil Ayub)
abra-bot (Abra Bot)
ammaratef45
amras (Sarma)
BornDeleuze
Brooke
carla
cas (Cassowary)
coopcloud
dannygroenewegen (Danny Groenewegen)
decentral1se (d1)
fauno (fauno)
ineiti (Linus Gasser)
javielico (Javielico)
jjsfunhouse
kawaiipunk (KawaiiPunk)
knoflook
moosemower
moritz
notplants
oxaliq (sorrel)
p4u1
renovate-bot (Comrade Renovate Bot)
simon
stevensting
trav (Trav Fryer)
yksflip
Clear assignees
No Assignees
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: coop-cloud/nextcloud#120
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
I have seen a couple of upgrades of non-nextcloud containers, namely mariadb and postgres which have major version bumps. If you do that, the convention is to also do a major release of the recipe, so operators know what is going on. Best would be to also mention that in the release notes.
Thanks for bringing this up! I think you're right about MariaDB. I don't run that myself and haven't done those releases, but maybe @ineiti can weigh in on that? From the docs, it looks like
mariadb-upgradeis needed after a major bump, orMARIADB_AUTO_UPGRADEshould be added tocompose.mariadb.ymlto handle that automatically (if that's reliable). @ineiti did you run into this when upgrading mariadb? Should that have been a major recipe bump because of the requiredmariadb-upgrade?For postgres it's different: The recipe now uses
pgautoupgrade, so e.g. in release 14.1.0+33.0.7-fpm the upgrade frompgautoupgrade:14topgautoupgrade:17is handled automatically, no manual prep needed. And with the recipe version being semver, I believe we should look at this from the perspective of the receipe/app/nextcloud.The docs write "In all cases, we follow the semver semantics.", also with an example:
So if we're strictly following semver: pgautoupgrade14->17 while nextcloud stays on the same version is not a breaking change (the nextcloud interface stays the same), no manual work required (handled by pgautoupgrade), and does not even introduce new features (postgresql is just a dependency, nextcloud functionality stays the same). I've released this as a minor recipe version to indicate a substantial underlying change. But technically this should have been a patch release from the recipe's perspective, right?
I just checked the logs, and mariadb didn't complain when going from
11.4.12to12.3.2.However, https://mariadb.com/docs/server/clients-and-utilities/deployment-tools/mariadb-upgrade writes that:
So I think, yes, we should add the
MARIADB_AUTO_UPGRADE=1.Wrt patch / minor / major version bumps of the recipe version: I think both for mariadb and postgresql, it should've been a minor version bump. It's not a major new feature, the user doesn't need to do anything, but you cannot downgrade afterwards.
See #121 and #122
Hi there! I agree on having a consistent versioning scheme.
We run Nextcloud with MariaDB and after every upgrade (no matter if major, minor or patch) we run these:
so major MariaDB Upgrades don't bother us that much. However I did experience a lot of trouble with
pgautoupgradein other recipes, where I had to manually continue the migration in a number of containers. Didn't fix the root cause yet - something with timings and the way updates are rolled out leading to the old container not being shutdown entirely, resulting inFATAL: lock file "postmaster.pid" already exists.bit of a sidetrack but maybe important note on reliability of database upgrades.
I would prefer to keep the versioning scheme strict, meaning major upgrade of any container will lead to a major version bump of the recipe. This will make the bump transparent for operators. And if you wish, you can add information to the release notes, that there are no breaking changes expected as the DB should do auto updates.
@dannygroenewegen any preference? I'm still leaning towards using a minor patch for automatic db updates... But not by much anymore :)
I can live with either way. @stevensting, so you propose deviating from this section of the docs by using a modified version of semver where the recipe version bump matches the version bump of any container in this recipe? So a major nginx or redis update should also be a major recipe update?
If you want to call it deviation, yes. I would call it doing it by the books. ;)
Wrong answer, I wanted you to call the shots :) Anyway, looking at the history, we have this precedence:
And the nextcloud version didn't change. So it was a major coopcloud version bump for a major dependency bump. Which means that unless we want to do a revolution, we should bump the major version also for dependency major versions...
I'll update #121, and I guess the https://docs.coopcloud.tech/maintainers/handbook/#how-are-new-recipe-versions-tested should be made more explicit...
I would prefer to have versions with specific meanings than just doing it by the books.
For me a major version might possibly break something. In many configurations major updates are stopped from automatically go through the pipeline and require a manual review. And this really depends on the image. If the update to the next major version of some images like mariadb, pgautoupgrade or redis is 100% safe to not break something I would prefer to not release a new major version that requires the manual review process.
Maybe first it's more time to decide which images could get major updates without making a major release than having a strict policy for all images, but longterm it saves a lot of time to not review each single major redis update manually.
In theory I would agree, but in practice I highly doubt that we have enough capacity to test this good enough to be confident that this will work for everyone. Didn't you have problems with pgautoupgrade?
I mean putting the major version marker gives everyone the freedom to decide what they want to do: Just run it anyway, deploy it on a test system etc. And redis also only has a new major version every couple of years.
But I would be ok with collectively deciding on exceptions where no major version bump is necessary, e.g. redis would be ok for me I guess, for DB containers I would be more hesitant.
It's unclear to me how we would decide what to do, even within a maintainer team. I guess something like the federation's consensus-based decision-making is the closest thing we have to a process for this? So here's a new proposal (for putting into
MAINTENANCE.md), hopefully incorporating all perspectives:Can everyone live with this, or is there something that's still missing?
Wow - do you work in diplomacy? Chef's kiss, I think it's marvellous.
I hope we won't spend ages debating whether it's a minor or major bump :)