-
Notifications
You must be signed in to change notification settings - Fork 82
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
Add support for LTS versions [DI-258] #808
Conversation
Adds support for latest-lts tags. Whenever a `.github/lts` file exists the workflow will check if it is a latest version and if so will push `latest-lts` tags and its variants (e.g. `latest-lts-jdk21`, `latest-lts-slim`, `latest-lts-slim-jdk21`, etc) For manual runs you need to use `IS_LTS` input instead.
831de5c
to
d41b2c7
Compare
383272d
to
c81692f
Compare
🙏 test coverage |
I've added tests for bash scripts, for workflow files themselves it's very hard to create automated tests |
Just thought I mention the below as came to my mind and not saying to do it I think different way to get current Then extract That said, the current Anyways, not too fussed here PS: perhaps a different way to do this is for Release Pipeline to actually trigger the Action and say if its LTS or not - rather than triggering via tags and relying on files (including |
It was my first idea for the solution, but it has few drawbacks:
Actually good finding. I've fixed it here: 6d42824
yes, maybe. BTW I think you mean |
Good points. not sure I agree with all of them but still you make a good case. Actually didn't know there was rate limit.
great.
Yes that's what I mean. Didn't give it much thought tbh. But you ask a good question. I was thinking that Release Pipeline will say if its LTS so that's easy. For system updates you then use REST API and no need for the file. But looks like REST API has its issues so we can stick with current file implementation. |
Fixes: https://hazelcast.atlassian.net/browse/DI-258
The previous LTS approach had an issue that it wouldn't work when we automatically rebuild previous LTS releases (due to CVE fixes etc). It would result with two concurrent LTS builds (e.g. 5.5 and 6.5) both overwriting
latest-lts
tag.This PR changes the logic that before overwriting the tag we make sure that the current version is the newest LTS. It's done by looking for the latest released version containing
.github/lts
file.Whenever a
.github/lts
file exists the workflow will check if we're building a latest LTS version and if so it will addlatest-lts
tags and its variants (e.g.latest-lts-jdk21
,latest-lts-slim
,latest-lts-slim-jdk21
, etc)For manual runs you need to use
IS_LTS
input. It will overwrite checking the existence of the file.Additionally added
DRY_RUN
flag to manual runs to be able test thetag_image_push.yml
workflow in more safer way, instead of actual push you'll see something like:Test run: https://github.com/hazelcast/hazelcast-docker/actions/runs/11361921888/job/31602670125