-
Notifications
You must be signed in to change notification settings - Fork 8k
Description
Modified version of #36810 (from 1.13)
This issue aims to track all steps needed to prepare the release 1.14 branches/builds.
This issue was created early to help document the steps using some new automation as well as any ordering changes, etc. Please update/add additional steps taken here so we can document for future releases.
See #24473 for steps used for the release 1.7 branch cutting; (note: 1.8 will be more relevant, see #27993). Note that was before automation, but does have pointers to PRs to see what some of the steps did. Note that the actual coding steps done by the automation steps are left in this issue for reference only. You only need to run the automated steps, and not the individual instructions. Also note that the reference steps may be INCOMPLETE as the automation is updated, not necessarily the reference steps.
For now, the code to run is in https://github.com/istio/release-builder master branch. From within that branch, one can do a make shell
and then within the shell run REPO_ORG=myorg STEP=x ./release/branch.sh
(you can update the STEP in the trigger-branch
file and not set it manually). This generates the changes for review (trygit status
or git diff
). Adding DRY_RUN=false will cause the PRs to be created in the REPO_ORG.
Note that the automated steps 3 and on require the new release's branch in the various repos which are created by automated step 2.
-
Set up release manager team - Make sure the new team has write access to the repositories. PR
-
Send an announcement on Discuss pre-announcing branch cut (adding, but are branch cut notifications needed and where?)
-
Send an announcement on Discuss announcing the start of branch cut and to stop merging of PRs (adding, but are branch cut notifications needed and where?)
-
(Automation step=1) Update dependencies. This must be done before branching so that PRs can be easily backported later. PR
- run
go get github.com/envoyproxy/go-control-plane@main
to update - Run the following command in istio/istio
UPDATE_BRANCH=master ./bin/update_deps.sh; make gen
(example) - Merge PR in istio/istio. Wait for it to complete.
- run
-
(Automation step=2) (new step because we are waiting on prior change to master before branching) Create a
release-1.14
branch in every Istio repo - run commandsexport org=xyz ; export repo=xyz ; (git clone git@github.com:${org}/${repo}.git && cd $repo && git checkout -b release-1.14 && git push --set-upstream origin release-1.14)
.- istio/istio
- istio/pkg
- istio/api
- istio/envoy
- istio/proxy
- istio/client-go
- istio/tools
- istio/common-files
- istio/gogo-genproto
- istio/release-builder
- istio/enhancements
- Explicitly skipped: istio-releases/pipeline, istio/tests, istio/istio.io, istio/test-infra
- No PRs to merge as the new branches were created by automation
-
Set up branch protection. Modify prow/config.yaml in test-infra to add release manages as owners for a branch. PR
-
(Automation step=3) (doesn't work locally, appears to need credential to add a tag to an existing build-tools image)(new step because this might need to be done separately) Set up prow on release branches
go run generate.go branch 1.14
(Note: Needed to run postsubmit in next step) (Contact Googler or ping in #test-and-release slack channel for help). -
(Automation step=4) (new step since we want the automation from prior step to actually create the image after PR merges)
- Updates istio/tools to build new release-1.14 build image (update BRANCH in docker/build-tools/build-and-push.sh. PR postsubmit will create new container images whose name will be used in the next step)
- Update common-files in new release. You first have to manually update the common/Makefile.common.mk update-common target to point to the new release (but not in common-files). The next step will cause the prow automation to actually call
make update-common
in these repos to do the actualmake update-common
against the new common-files release branch- istio/common-files - skipped. Covered in next step
- istio/istio
- istio/pkg
- istio/api
- istio/client-go
- istio/gogo-genproto
- istio/proxy
- istio/release-builder
- istio/tools
- Update
CODEOWNERS
to contain only the release managers for this release. Command:export org=xyz ; export repo=xyz ; (git clone git@github.com:${org}/${repo}.git && cd $repo && git checkout release-1.14 && git checkout -b release-1.14-codeowners && echo '* @istio/release-managers-1-14' > CODEOWNERS && git add CODEOWNERS && git commit -m 'Set release managers as CODEOWNERS for release-1.14' && git push --set-upstream origin release-1.14-codeowners)
.- istio/istio
- istio/pkg
- istio/api
- istio/proxy
- istio/client-go
- istio/tools
- istio/common-files
- istio/gogo-genproto
- istio/release-builder
- istio/enhancements
- Stop publishing
latest
tags - Update istio/release-builder branch changes from
master
to new release in build.sh, publish.sh and manifests.
-
Merge PRs from STEP 4. Wait for the new build images to be created at https://gcr.io/istio-testing/build-tools.
-
As part of the STEP 4 PR post-submits, a new PR will be created in the istio/common-files repo with a title like:
Automator: update build-tools image@release-1.14 in istio/common-files@release-1.14
. The work in this PR is only a portion of Step 5, and merging it will cause issues with reverting the repos to the main branch common-files. CLOSE this PR. Note that for this branch cut, we incorrectly approved this PR instead of doing Step 5 resulting in a number of PRs to fix up issues. -
(Automation step=5) (new step since we need image from prior step) Update istio/common-files to set release-1.14 build image (Update the UPDATE_BRANCH in files/common/Makefile.common.mk to be the new release name, and IMAGE_VERSION in files/common/scripts/setup_env.sh to be the new build image from prior step (found at https://gcr.io/istio-testing/build-tools).
-
Merge PR from STEP 5. Wait until step 5 PR merges and all the postsubmit generated PRs (to update common files in repos) merge.
Additional steps that still need automation (if possible)
-
Add new label: cherrypick/release-1.14: PR
-
Create a 1.15 milestone: PR
-
Fix up proxy automated job to pull from correct envoyproxy release branch if possible (set UPDATE_BRANCH). example
-
Also, a manual update can be done to fix up the proxy and istio repos to point to latest in that branch. example
-
Bump master to version 1.14
- Update Istio: 1.14.0 to 1.15.0, 1.14-dev to 1.15-dev, etc: PR
-
Send an announcement on Discuss announcing branch cut complete and PRs can be merged again (adding, but are branch cut notifications needed and where?)
-
Publish a beta release (from https://docs.google.com/document/d/1ilwz-HGSeiRDCFwP5rm-5d_UY6OOYL_nflx7bNggek0/edit#heading=h.qex63c29z2to, builds on release branch are labeled
beta
. Updating below names to reflect that.- Run bin/update_deps.sh in istio/istio
- Trigger a 1.14 beta.0 build
- Some verification to verify build is good
- Publish a 1.14 beta.0 release
-
Send an announcement on Discuss announcing availability of beta. May wait and add something about starting the first round of community testing. (Done in Slack)
-
Ask istio.io team to run job to update to use the 1.14 branch (probably @ericvn) [example](Prepare for v1.12 as Istio source is already branched istio.io#10455
-
Run the long-running tests on the dev builds