Releaseworkflow #65
Replies: 1 comment 2 replies
-
Yes, but only for those submodules which need to be updated (from their last
Yes, so basically, for any submodule that you want to give a new
Yes. Again, this can be done locally (via
No. The Every merge should usually keep this (because it's unlikely there are conflicts here – main will stay at The CI workflow itself, which gets triggered by the push, does not change any files.
Yes, and because these images get pulled from GHCR on the submodules, we must wait for all submodules to be rebuilt before pushing/merging into ocrd_kitodo:stable.
Yes, the CI workflow then picks it up and runs
We could now either create a new release on the Github UI, or have the (successful) CI do that automatically. (For example, in ocrd_all's release.sh, we aggregate the changelogs/commit messages from all submodules since the last release.)
IIUC you did misinterpret some details, from which the overall picture might have looked too bleak. (But perhaps I just misread your formulations.)
The only manual steps I can see are those which we would never want to be automatic: triggering new stable versions in submodules (and only those you want to update), and triggering a new stable version at the top. That triggering can happens on a local git clone or in Github itself.
No. If you clone and checkout the (But of course the whole point of publishing stable images is so you don't need to rebuild locally, so I would not even call it misleading if there actually was a difference. A checkout is only necessary because the images themselves can only be run along with their docker-compose.yml and the .env file. Rebuilding Docker images is a developer task, not a user action.)
Both is the case here IMO.
Ok, so at this point we have a new commit on ocrd_kitodo:stable, but nothing new on the submodules yet.
… which means giving up the modules' responsibility for their own packages – everything gets deployed from ocrd_kitodo (with some key sharing magic involved). @SvenMarcus you had some reservations against managing packages from outside their respective repos IIRC? So IIUC you would rewrite makefile-ci.yml such that it applies to both main an stable, is responsible both for testing and eventually for deployment (of all submodule images) in both cases, just uses I actually do like the simplicity here. (Once we have set everything up of course.)
Yes, that would be even better. We still need to share the GITHUB_TOKEN across repos, but at least the build itself would be local to each repo. And again, this could apply to both
I do like this better – the image states get reflected by the repo branches. Also, I believe this would be fully compatible with the manual triggers described by the method proposed originally.
Again, we could write a release script that aggregates all changes textually here. |
Beta Was this translation helpful? Give feedback.
-
Unfortunately, I still have some ambiguities regarding the release workflow and for this reason I would like to discuss them to avoid misunderstandings.
Here briefly description as I understood you:
The CI workflow
makefile-ci.yml
in themain
branch of ourocrd_kitodo
repository has run successfully after the last push. Now we decide to make a new release. For each repositoryOCR-D Controller
,OCR-D Manager
andOCR-D Monitor
an image with the tagstable
should be built now. This is done according to your statement by a manual triggering e.g. by astable branch
which receives the new version of themaster
ormain
with a push and builds the image via a corresponding workflow.After that, the
stable
branch ofocrd_kitodo
is upgraded by merging the current state ofmain
branch into it. This triggers a workflow that replaces all necessary.env
image tag names withstable
, prepares and runsmake start
to pull thestable
images from the repositories. After the successfully test run withmake test
the release is created manually.Is it as you have described this process or have I misunderstood something here?
In my opinion, this release workflow is inconvenient and also misleading. Inconvenient because here are lot of manual tasks have to be executed on different repositories. Misleading cause if I clone the
stable
branch of the base repository and build withmake build
I maybe get a different version of the respective image than if I pull it directly.My goal is to have as little manual effort as possible to do the release and the last
stable
state should be independent of usingmake build
or pull thestable
tag of image directly.The way I would like the workflow to be
The CI workflow
makefile-ci.yml
in themain
branch of ourocrd_kitodo
repository has run successfully after the last push. Now we decide to make a new release. We merging the state ofmain
branch into thestable
branch of ourocrd_kitodo
repository. After themakefile-ci.yml
workflow passed successfully we ...Variant 1
... deploy the builded and tested images to the respective repository with the
stable
tagVariant 2
... start external workflow e.g.
update-stable.yml
of submodule repository using workflow dispatch with corresponding submodule "commit as ref" as param (https://github.com/orgs/community/discussions/26323#discussioncomment-3251454).Variant 2.1
The
update-stable.yml
workflow create a runner checkout with "commit as ref" and build and deploy the new stable image version to the contrainer registry.Variant 2.2
The
update-stable.yml
workflow update thestable
branch and the newstable
image version is created by a separate workflow whenstable
branch changed.After that we create the new release manually using the
stable
branch ofocrd_kitodo
.fyi @bertsky @SvenMarcus
Beta Was this translation helpful? Give feedback.
All reactions