-
Notifications
You must be signed in to change notification settings - Fork 0
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
[SYSE-398] Delete v5 tag and do not push v{{Major}} tags #357
Conversation
FWIW, I don't really see that as the right move (TykTechnologies/tyk#6517 (comment)). You still have a v5 tag for ECR if that's relevant? |
Can you explain the usecase for using v5 instead of v5.0 (for example)? |
I thought I did that early on in the linked comment?
I personally use For context, look at your Github Actions workflows, many of your actions are only using the major version tag, you could use minor or even point releases, or have these versions bumped by a PR from dependabot like many projects do. You automatically get the latest minor + patch release of the action as a result. Where it's not so good is your workflows are using the same actions with different major versions as the maintenance of this is ad-hoc.
I didn't have LTS in mind tbh. You have
I don't disagree with you for those that are using LTS. Some users have tooling to manage their images (either via automated updates or notifications/triggers) that monitor these partial semver tags on the registry for when the associated image digest is changed. I have written these docs for a project I maintain which might provide more insights into that for you? There is value in having these tags, so long as they're properly updated and not regressing like your CI is publishing. On the project I maintain we have not had this issue as there are no separate release branches, otherwise I'm certain we'd run into that same concern. |
Re-usable workflows were considered and discarded as they did not help with our particular problems. The design uses templates (in this repo) to implement releng in about 7-8 repos. The choice was dictated by,
The problem you mentioned of keeping all the actions versions in sync was a long-standing niggle and the hack implemented by the
I agree with the spirit of what you are saying. The tags are not managed by hand and the result is purely due to operational choices. I don't think that matters are as dire as you imply :) This has been production for about 2 years and we have shaken out the more egregious bugs. There is certainly room for improvement but it does require understanding of the sometimes incongruous reality that has driven this implementation. 👋 |
Could please you elaborate on what went wrong there? (for my own benefit, but could be good context for the PR too) Responses to each point you provided (collapsed for brevity)
A central template is not really all that different from the re-usable workflows beyond risk of falling out of sync after distribution? If you viewed the ones I linked you to as an example (like this one), they modularize and parameterize the workflows: jobs:
build-image:
name: 'Build AMD64 Image'
uses: docker-mailserver/docker-mailserver/.github/workflows/generic_build.yml@master
run-tests:
name: 'Test AMD64 Image'
needs: build-image
uses: docker-mailserver/docker-mailserver/.github/workflows/generic_test.yml@master
with:
cache-key: ${{ needs.build-image.outputs.build-cache-key }}
publish-images:
name: 'Publish AMD64 and ARM64 Image'
needs: [build-image, run-tests]
uses: docker-mailserver/docker-mailserver/.github/workflows/generic_publish.yml@master
with:
cache-key: ${{ needs.build-image.outputs.build-cache-key }}
secrets: inherit You get a much clearer overview of the core jobs being run and dependencies from that as your entrypoint instead of a large single release workflow. A similar scheduled builds workflow reuses the build job, does a security scan and publishes an update of the image, while another similar workflow performs builds and runs tests for PRs. All three are high-level and doing copy/paste (even if generated via a tool) with adjustments to accommodate those small variations would not be helpful. Those differences are far more visible across all 3 top-level workflows, that is easy to grok. Meanwhile they are sharing common "generic" workflows which again helps ensure they are easy to grok and maintain. Regardless of what branch those top-level workflows run from, they'll call the same master branch maintained generic workflows, there's really no value I can think of where you benefit from managing CI with copies of the re-usable workflows on the release branches instead, that is just going to add risk for accidents.
In what way is it a single point of failure to have your workflows in a repo managed on a specific branch vs another? That really does not make much sense to me sorry? It's not like Tyk isn't already adopting what I've proposed in some places of CI: uses: TykTechnologies/github-actions/.github/workflows/godoc.yml@main If anything that takes it a step further and has centralized an external repo to reference not just a branch of the same repo.
Without much context, this is difficult to comment on. I've clearly shown that you can have cleaner workflow management and support variations. If the variation is wildly different, it could still be maintained alongside it's variations rather than spread across branches?
I would be really interested in how well that's working out vs the approach you seem to disagree taking? I already did the work to find out why With the Anyone pulling on the Similarly you have the
I think the prior points you made compound with this one. I'm a little confused how your approach is working out better when it involves PRs to individual release branches to apply the changes, yet still introduces bugs (as was shown here regarding the EDIT: Apologies, I see that wasn't a merge error. Your template here explicitly does this: gromit/policy/templates/releng/.github/workflows/release.yml.d/goreleaser.gotmpl Lines 184 to 188 in 8b4e314
Lines 104 to 107 in 8b4e314
Which is true the The June PR (merged July) that I mentioned switching back to Later on July 17th a PR labeled I see where the problem with If
You are probably right! I just get OCD about correctness at times 😓 Your template approach here seems good, but the workflow suggestions I provided would have still minimized what happened with |
I didn't get a response to that initial query above. Just a reminder if it matters: gromit/policy/templates/releng/.github/workflows/release.yml.d/goreleaser.gotmpl Line 174 in 2690f89
Additional observation: You have this part of the template: gromit/policy/templates/releng/.github/workflows/release.yml.d/goreleaser.gotmpl Lines 217 to 219 in 2690f89
Reverting the action version and step name seems unintentional? It's still the newer values on this repo with the template as shown above, so I'm not sure what went wrong with that process. Perhaps since the Go 1.22 PR references a prior attempt in May (which is still open for some reason?), it had the outdated release workflow, and conflict resolution (if any) preferred what appeared to be newer lines/diff? It'll presumably be fixed again once you do another template update... but I think it highlights another subtle bug that slips by unnoticed? For |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
looks good!
TykTechnologies/tyk#6517