-
Notifications
You must be signed in to change notification settings - Fork 4
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Refactoring Docker Image Versioning and Build System #208
Comments
I started discussing this with @soenkeliebau last week (before he ran off on vacation) and ultimately it seems like this is a slightly bigger issue than we anticipated at first, since our current repository structure isn't set up to accomodate maintaining multiple image branches. Maybe it would make sense to split this into one issue for just doing patch releases for the current release of each product, and a separate one for figuring out a sensible LTS-compatible branching strategy? |
@fhennig and I will refine this together tomorrow |
Notes from a refinement meeting with Sönke and TeoSome Notes
Branching strategy
StepsCurrently, this ticket is part of the epic to update versions for the upcoming release. We need to decide what to do now, and what to do later. For this release 22.11
In the Future
More thoughts
|
@lfrancke Sönke, Teo and I did a refinement, and I adapted the issue content above accordingly. This ticket turned out larger than expected, and so now it became an epic. Two of the tasks are immediately relevant to the next release, which ahve been refined and put into the "Waiting for acceptance column" the other tickets still need refining, but are also not immediately relevant for the next release. I'm tagging you to move the tickets around the board as you see fit 😄 (especially this epic, I'm not sure where to put it) |
Thank you, will do tomorrow! But this is also "done" with refinement? It's still marked as "In Progress" |
it is done for now, but since some of the tasks this epic contains are still not refined, the epic might need re-refining at some point as well. I think what I'm saying is, that maybe the "Epic" type doesn't fit this workflow very well. I think we could move it into "Track" or back to "Ideas" I think. |
Hi ho, you had a meeting yesterday, what was the outcome? Is the Issue description decided and up to date? |
No, this will require more time. |
I sadly couldn't participate in the meeting and have concerns after speaking with @Maleware about this. Happy to have a follow-up meeting :) |
Closing this as replaced by #260 (which covers LTS and the upgrading of older images issues only). New release-branches are covered by stackabletech/issues#309. |
The current purely tag based system for tracking product and image versions does not allow us to update older product images with newer base images, without also upgrading the product version.
Goal
We implement a system that supports upgrading base images for older product images. This system should be easy to use without much repetitive manual work.
New Branch System
In the new branching system, we will maintain a release branch per platform release, i.e. a branch
release-22.09
,release-22.11
.On these branches we will tag platform versions, i.e.
22.11.0-rc1
,22.11.0
,22.11.1
.As we now tag a whole platform release instead of individual products, the build system/GitHub actions should build all images from these tags.
Next Steps
Roadmap
As this issue turned out to be more complex than anticipated, we decided to divide it into multiple stages.
Keep our next Release current under the new Scheme
LTS Strategy and Upgrading older Images
Do we want to upgrade base images for all previous release, all the time, indefinitely? This is to be decided. Upgrading older product images is not strictly necessary for the next release, so we decoupled this.
Lastly, manual steps should be automated as best we can.
Old Ticket Content
Description
As part of our release tracking epic we have an item to update the ubi8 base image version in a new release cycle.
As this affects all supported product images this can potentially require quite a bit of manual effort and we think is worth creating an automation for.
Since releasing an image is done automatically upon pushing a tag, all this automation needs to do is retrieve existing tags from the repository, filter and mutate these tags to get a list of new tags that represent the updated images and push these tags.
It probably makes sense to write a python script for this instead of a bash script, as we'll need to parse semver at least in the filtering step.
Update
I have thought on this a bit more and am afraid that it is more complex than I initially wrote in this ticket / I forgot to mention a part of the issue.
When I write "push tags" we of course need to also identify the correct commit to push these tags to, and that cannot be HEAD because then we would include all current changes to the image in older versions as well.
For example we have kafka3.3.0-stackable0.7.0 as current image and also kafka3.3.0-stackable0.4.2 as an older version, if we now tag HEAD as kafka3.3.0-stackable0.4.3 then that image will suddenly include all changes that were made between 0.4.x and 0.7.x as well and potentially break compatibility.
So we'll nead release branches for image versions as well and then cherrypick the commit that contains the base image update to those branches.
This is done when
Example
Step 1 - Get tags
To retrieve the tags something like this migth be done, which filters on a regex that pretty much just requires a stackable version to be present.
Step 2 - Filter tags
Taking the superset images as an example we now need to remove images for which a subsequent version already exists.
In this case that would be 'superset-2.0.0' which is superceded by 'superset-2.0.1'.
So that would leave us with this list:
Step 3 - Create new tags
Now we increase the patch level for every tag:
Step 4 - Push tags
Push all tags that were just created.
The text was updated successfully, but these errors were encountered: