Release logic doesn't understand difference between app/$other container updates #159
Labels
No Label
breaking-change
bug
CI/CD
design
documentation
duplicate
enhancement
help wanted
invalid
plugin
question
secrets
shell-completion
versioning
wontfix
No Milestone
No Assignees
2 Participants
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: coop-cloud/abra#159
Loading…
Reference in New Issue
No description provided.
Delete Branch "%!s(<nil>)"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Following coop-cloud/portainer#5, I am running
abra recipe portainer release
which results in the following diff:We've fallen behind here on updating because there is an
app
update and and underyling service update for theagent
container. In this case,abra
says that the new version should be1.24.2
but should it not be1.24.2_1
?This one is a bit tricky.
Maybe we need a
--app
(or whatever) flag to tell therelease
command that we only care about thisapp
container and not theagent
one and we manually order the updates? We could then have a--underlying
(or whatever) to tell it to only do upgrade logic on the underling services?I think we have different ideas about how the versioning should work, yours is probably right, but let me lay out mine so we're choosing between them from a position of Maximum Information.
To me,
1.24.2
means "the first recipe involvingportainer/portainer:1.24.2
that we publish", and1.24.2_1
means "the second recipe involvingportainer/portainer:1.24.2
that we publish", by definition updating anything except the version ofportainer/portainer
.This means that if we update > 1 image in a release, the increment will be determined by the overall changes. Assuming we have a
foo
recipe with 3 services, starting atexample/image:0.0.1
(app
),example/image2:1.2.3
(db
) andexample/image3:4.5.6
(cache
), and upgrading to:image:0.0.2
,image2:1.2.4
,image3:4.5.7
→0.0.2
(i.e. ignore the fact there were updates to other services beyond the main one)image:0.0.1
(unchanged),image2:1.2.4
,image3:4.5.7
→0.0.1_1
(i.e. only increment by one even though two non-main services have changed)In other words, to me, version
1.24.2
of our Portainer recipe doesn't mean "a recipe where the ingredients areportainer/portainer:1.24.2
, plus the oldest version ofportainer/agent
that we know about -- it means "the first version of our Portainer recipe that featuresportainer/portainer:1.24.2
".I guess this comes back to the question of how much intervention we're making as recipe maintainers: if the answer is "none" then I definitely see the case for making sure we make tags for all reasonable combinations of image versions, to make sure folks can easily switch between them -- but if we're moving towards "each released recipe version is a (somewhat) tested (somewhat) recommended combination of images then the calculus between extra complexity in
sub_recipe_release
& extra noise inabra recipe foo versions
vs offering a more limited set of version combinations seems to lean in the other direction.Oh yeah, I like what you're proposing! Now that I re-read this, I'm definitely leaning more towards new versioning semantics (A New Versioning System TM) which was specifically what we said we wouldn't be doing. Down to just document what we discussing here on version handling. I also think if we can do some diffing / change log / git commit showing via
abra
commands on deploy or some other way, this will mitigate my concerns. I just it to be easy to know what is coming in the update. My semver.org training means I look for that exclusively in the version itself but it doesn't have to be that way. Arguably semver isn't that great anyway because$lots_of_reasons
.