Skip to content

Prepare the Release 1.8 branches #27993

@ericvn

Description

@ericvn

This issue aims to track all steps needed to prepare the release 1.8 branches/builds.

This issue was created early to help document the steps using some new automation (I hope) 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 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.

For now, the code to run is in https://github.com/ericvn/release-builder/tree/autoBranch. 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=true 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 which is created in automated step 2.

  • Set up release manager team - Make sure the new team has write access to the repositories.(Add 1.8 release manager group community#466)

  • Build new base images: 1.9-dev.0. Run tools/build-base-images.sh. In this case, 1.8-dev.1 had vulnerabilities, so 1.8-dev.2 was also built.

  • Update dependencies. This must be done before branching so that PRs can be easily backported later.

    • Check if github.com/envoyproxy/go-control-plane dependency needs to be updated (to master?). Ask Kuat.
    • (Automation step=1) Run the following command in istio/istio UPDATE_BRANCH=master ./bin/update_deps.sh; make gen
    • Merge PR in istio/istio. Wait for it to complete.
  • (Automation step=2) (new step because we are waiting on prior change to master before branching) Create a release-1.8 branch in every Istio repo - run commands export org=xyz ; export repo=xyz ; (git clone git@github.com:${org}/${repo}.git && cd $repo && git checkout -b release-1.8 && git push --set-upstream origin release-1.8).

    • istio/istio
    • istio/pkg
    • istio/api
    • istio/proxy
    • istio/envoy
    • istio/client-go
    • istio/tools
    • istio/common-files
    • istio/gogo-genproto
    • istio/release-builder
    • 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 branch. Ex: Add branch protection for 1.7 branches test-infra#2820.

  • (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.8 (Note: Needed to run postsubmit in next step)

  • (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.8 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 actual make update-common against the new common-files release branch
      • istio/common-files - skipped. Covered in next step
      • istio/istio
      • istio/pkg
      • istio/api
      • istio/envoy (not needed)
      • 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.8 && git checkout -b release-1.8-codeowners && echo '* @istio/release-managers-1-8' > CODEOWNERS && git add CODEOWNERS && git commit -m 'Set release managers as CODEOWNERS for release-1.8' && git push --set-upstream origin release-1.8-codeowners).
      • istio/istio
      • istio/pkg
      • istio/api
      • istio/envoy
      • istio/proxy
      • istio/client-go
      • istio/tools
      • istio/common-files
      • istio/gogo-genproto
      • istio/release-builder
    • Stop publishing latest tags
    • Update istio/release-builder branch changes from master to new release in build.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.

  • (Automation step=5) (new step since we need image from prior step) Update istio/common-files to set release-1.8 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)

  • Adjust istio/proxy to correct version of istio/envoy
  • Update all repos that point to master branch of another repo to point to the release branch. master-latest-daily -> 1.8-dev (see https://discuss.istio.io/t/deprecation-notice-daily-builds/3991), latest -> 1.8-dev, git clone master to git clone release-1.8, etc.
    • istio/istio
    • istio/pkg
    • istio/api
    • istio/envoy
    • istio/proxy
    • istio/client-go
    • istio/tools
    • istio/common-files
    • istio/gogo-genproto
    • istio/release-builder
  • Bump master to version 1.9
  • Add new label: cherrypick/release-1.8
  • Run the long-running tests on the dev builds (owner: )
  • Send an announcement on Discuss ()
  • Add release lock for release 1.8 in master branch of API repo. See https://github.com/istio/api/blob/master/scripts/check-release-locks.md
  • Publish an alpha release
    • Trigger a 1.8 alpha build (owner: )
    • Publish a 1.8 alpha release (owner: )

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions