Skip to content
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

Implement release-start and release-go-images #49

Merged
merged 9 commits into from
Jun 28, 2022

Conversation

dagood
Copy link
Member

@dagood dagood commented Jun 23, 2022

This PR fills in the beginning and tail of end-to-end release automation. This PR means that as long as the patch files don't require fixup, there are only three manual steps to take care of: run a build with a list of version numbers to release, approve the go-images build to start polling, and send an internal announcement email. There's still a bunch that can be improved (see the bottom of docs/release-process/README.md) but the pipelines should already be more helpful than harmful. 😄 The improvements can be worked on incrementally.

Rendered instructions: docs/release-process/instructions.md
Rendered main readme (includes general flow diagram): docs/release-process/README.md

I split the changes into commits to review one by one. There are a few refactors that should be a lot clearer this way, rather than showing up in various places in a big, combined diff. The commit messages include more info about each step.

Moving these funcs out of buildmodel represents their broad purpose better. But more importantly, it lets us reuse them without creating a dependency cycle between the buildmodel and sync packages.
This is where it belongs: it's specific to CI builds in AzDO. Moving it removes clutter from the releasego package and it may be used by other packages in the future.
The new funcs operate on a git directory. Using receivers on a struct is more complicated, and the struct's fields didn't apply nicely to all scenarios the funcs should be reusable in.
The PR number and up-to-date-commit variables need to be set by a handful of commands that interact with PRs in some way, so this is moved to the sync package.
Adds the option for dockerupdate/dockerupdatepr to set AzDO variables to PR number and/or up-to-date commit hash for pipeline automation. Fix change detection to work with submodules.
The final pipeline can use get-images-commit to wait for all PRs generated by each version's dockerupdatepr call to complete and merge.
The pipeline can use these to create one issue per version number to be built and one issue to track the combined release day.
@dagood dagood marked this pull request as ready for review June 24, 2022 00:02
@dagood dagood requested a review from a team as a code owner June 24, 2022 00:02
Update release-build to include go-images Docker update.

Add release-go-start to kick off the release day, and release-go-images to join each individual version's build back into one job and finish off the release activity by running the Docker image release.
@dagood dagood merged commit aae8bc8 into microsoft:main Jun 28, 2022
@dagood dagood deleted the dev/dagood/release-image branch June 28, 2022 23:24
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
3 participants