Describe the Enhancement
While preparing for the beta3 METplus component releases for the METplus-6.0.0-Coorindated Release, @georgemccabe and @JohnHalleyGotway brainstormed how we might restructure the branching, tagging, and automation logic for this METbaseimage repository. This issue describes the perceived problems and proposes changes to be considered and further developed.
Currently, METbaseimage contains a single branch, named main, and tagged releases are created from that single branch. The MET repository references these tagged releases to specify what base image should be used, and generally speaking, as the compilation requirements change, the METbaseimage version number is increased.
The problems with this approach include:
- The
dtcenter/met-base image is only rebuilt when a new tag is created and those releases are relatively infrequent. Versions of the underlying packages can change during the intervening months. When building an image for a new release, there may be multiple problems to be fixed that originated since the last release was created.
- Once the tagged
dtcenter/met-base images are created, they are never rebuilt. Instead they grow stale, and there is no mechanism for incorporating fixes for security issues.
I do note that the MET Dockerfile does run apt update to pull in OS updates that have occurred since the base image was tagged, and that is good. But its still worth addressing the stale met-base images.
I propose that we refine this approach to be more proactive about finding/fixing problems as soon as they arise. In addition, we should rebuild all active base images on a routine basis to incorporate fixes for vulnerabilities in the underlying packages. Also recommend making the branching/workflow logic for METbaseimage more consistent with the other METplus components for simplicity.
Proposed changes:
- Rename the
main branch as develop.
- Continue creating tagged
vX.Y releases from the develop branch, but only actually use those tags to document the logical changes.
- When creating a
vX.Y release, create a corresponding main_vX.Y branch.
- Update the MET repo to replace references to
dtcenter/met-base:vX.Y with dtcenter/met-base:main_vX.Y. So MET will use the contents of that dynamic main branch rather than the static tag. This insures that all downstream MET and METplus images won't contain packages that have grown too stale and contain security vulnerabilities.
- Define automation logic via GHA to setup a cron job to rebuild all active
main_vX.Y branches on some routine schedule (e.g. weekly, bi-weekly, or at least monthly). Recommend that we give some thought to what an active branch means.
- Add new information to the METplus docs directory to define our use of METbaseimage and release process.
- Update the MET docs directory to define where/what to update when changes are made to the METbaseimage. Currently that's defined in ~4 spots. Try to reduce that to as few as possible.
Let's discuss further and clarify these details.
Time Estimate
Estimate the amount of work required here.
Issues should represent approximately 1 to 3 days of work.
Sub-Issues
Consider breaking the enhancement down into sub-issues.
Relevant Deadlines
List relevant project deadlines here or state NONE.
Funding Source
Define the source of funding and account keys here or state NONE.
Define the Metadata
Assignee
Labels
Projects and Milestone
Define Related Issue(s)
Consider the impact to the other METplus components.
Enhancement Checklist
See the METplus Workflow for details.
Describe the Enhancement
While preparing for the beta3 METplus component releases for the METplus-6.0.0-Coorindated Release, @georgemccabe and @JohnHalleyGotway brainstormed how we might restructure the branching, tagging, and automation logic for this METbaseimage repository. This issue describes the perceived problems and proposes changes to be considered and further developed.
Currently, METbaseimage contains a single branch, named
main, and tagged releases are created from that single branch. The MET repository references these tagged releases to specify what base image should be used, and generally speaking, as the compilation requirements change, the METbaseimage version number is increased.The problems with this approach include:
dtcenter/met-baseimage is only rebuilt when a new tag is created and those releases are relatively infrequent. Versions of the underlying packages can change during the intervening months. When building an image for a new release, there may be multiple problems to be fixed that originated since the last release was created.dtcenter/met-baseimages are created, they are never rebuilt. Instead they grow stale, and there is no mechanism for incorporating fixes for security issues.I do note that the MET Dockerfile does run
apt updateto pull in OS updates that have occurred since the base image was tagged, and that is good. But its still worth addressing the stale met-base images.I propose that we refine this approach to be more proactive about finding/fixing problems as soon as they arise. In addition, we should rebuild all active base images on a routine basis to incorporate fixes for vulnerabilities in the underlying packages. Also recommend making the branching/workflow logic for METbaseimage more consistent with the other METplus components for simplicity.
Proposed changes:
mainbranch asdevelop.vX.Yreleases from thedevelopbranch, but only actually use those tags to document the logical changes.vX.Yrelease, create a correspondingmain_vX.Ybranch.dtcenter/met-base:vX.Ywithdtcenter/met-base:main_vX.Y. So MET will use the contents of that dynamic main branch rather than the static tag. This insures that all downstream MET and METplus images won't contain packages that have grown too stale and contain security vulnerabilities.main_vX.Ybranches on some routine schedule (e.g. weekly, bi-weekly, or at least monthly). Recommend that we give some thought to what an active branch means.Let's discuss further and clarify these details.
Time Estimate
Estimate the amount of work required here.
Issues should represent approximately 1 to 3 days of work.
Sub-Issues
Consider breaking the enhancement down into sub-issues.
Relevant Deadlines
List relevant project deadlines here or state NONE.
Funding Source
Define the source of funding and account keys here or state NONE.
Define the Metadata
Assignee
Labels
Projects and Milestone
Define Related Issue(s)
Consider the impact to the other METplus components.
dtcenter/met-baseversion used.Enhancement Checklist
See the METplus Workflow for details.
Branch name:
feature_<Issue Number>_<Description>Pull request:
feature <Issue Number> <Description>Select: Reviewer(s) and Development issues
Select: Repository level development cycle Project for the next official release
Select: Milestone as the next official version