-
Notifications
You must be signed in to change notification settings - Fork 212
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
Separate release drafting from publishing #3755
Conversation
Full-stack documentation: https://docs.openverse.org/_preview/3755 Please note that GitHub pages takes a little time to deploy newly pushed code, if the links above don't work or you see old versions, wait 5 minutes and try again. You can check the GitHub pages deployment action list to see the current status of the deployments. Changed files 🔄:
|
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.
This makes sense! One editorial note for the release documents.
Rephrasing this for my own understanding: The release drafts for every service are made on each commit to main. When we want to deploy a release, we are now only able to deploy the latest
image. That's done by publishing the draft, which creates a release and kicks off the deployment. We can still perform rollbacks by using the deployment workflows in the infrastructure repo with a specific tag.
Is that all correct?
Yes, everything else remains the same, the only difference is that now you publish a release instead of manually dispatching the release app workflow. Using the latest tag is the only reasonable option I can think of, and the release notes were always based on that anyway, they didn't, for example, try to only include changes up to the SHA passed in, it always used the latest changes. In any case, the release notes will let us know what is actually in that SHA now, which is more useful than a random guess of "I guess whatever is in staging now is probably fine". From my perspective there is no good reason to release something that is not the current staging version, unless staging is for some reason broken, in which case it needs to be fixed before we cut a release! If we absolutely need to deploy a specific SHA to production, which includes rollbacks but that is just a side effect of being able to deploy any arbitrary image tag, we can still do so using the processes that already existed. |
Awesome, totally aligned with your perspective there! Just wanted to make sure I understood the new approach :) |
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.
It's so nice to be able to see what you're deploying!
Would you still be able to edit the drafted release notes as you can do it now? Sometimes the PRs are categorized incorrectly, and I update the notes.
It should be, right before releasing. Whenever a new change is pushed to main I think it always re-writes the body and fully replaces it. But if you edit the draft release body, then publish it (which you can do from the same page), that's the body that will get used when generating the changelog PR. The release app workflow no longer interacts directly with the drafted release, it only reads the body from the github event payload in context, so it's always working from the published release's body. That more flexibility than we have now, where we (technically) have to edit the PR and the GitHub release body. I know that I've edited changelog PRs before and never did it occur to me to also update the GitHub release body (!), so it'll be nice that future ones should match. Thanks for the reviews, y'all. I'll push this to main on Monday and test it out then. |
Fixes
Fixes #2264 by @sarayourfriend
Description
Splits release drafting into its own workflow that runs on every push to main.
Updates the release-app to have a single "release" trigger, to always use the latest staging image to deploy production. It derives which app to release based on the released tag.
As the trigger is the release being published, there's nothing we need to do with the release in the
release-app
workflow, everything is now exclusively about (a) getting the images tagged, (b) deploying them (if API or frontend), and (c) opening the changelog PR.Testing Instructions
This is annoyingly hard to test. I've tried to write the release drafting workflow in such a way that it will get tested, but I don't know if it will work. There is no way to really test the release app workflow changes without merging and trying it on main, and then fixing things as we go.
Checklist
Update index.md
).main
) or a parent feature branch.Developer Certificate of Origin
Developer Certificate of Origin