The release is started from the istio/istio module.
Istio release is currently composed of artifacts for the following repos:
The release consists in retagging the artifacts and creating new annotated tags.
Note that only Admins can create a release.
From istio/istio, the istio.VERSION file should look like this
$ cat istio.RELEASE
# DO NOT EDIT THIS FILE MANUALLY instead use
# tests/updateVersion.sh (see tests/README.md)
export CA_HUB="docker.io/istio"
export CA_TAG="0.1.2-d773c15"
export MIXER_HUB="docker.io/istio"
export MIXER_TAG="0.1.2-6bfa390"
export ISTIOCTL_URL="https://storage.googleapis.com/istio-artifacts/pilot/stable-6dbd19d/artifacts/istioctl"
export PILOT_HUB="docker.io/istio"
export PILOT_TAG="0.1.2-6dbd19d"
Please make sure that ISTIOCTL_URL and PILOT_TAG points to the same SHA.
The next release version is stored in istio.RELEASE:
RELEASE_TAG="$(cat istio.RELEASE)"
The next step is to create an annotated tag for each of the repo. Fortunately each tag contains the short SHA at which it was built.
PILOT_SHA=6dbd19d
MIXER_SHA=6bfa390
AUTH_SHA=d773c15
$ git clone https://github.com/istio/pilot
$ cd pilot
$ git tag -a ${RELEASE_TAG} -m "Istio Release ${RELEASE_TAG}" ${PILOT_TAG}
$ git push --tags origin
$ git clone https://github.com/istio/mixer
$ cd mixer
$ git tag -a ${RELEASE_TAG} -m "Istio Release ${RELEASE_TAG}" ${MIXER_TAG}
$ git push --tags origin
$ git clone https://github.com/istio/auth
$ cd auth
$ git tag -a ${RELEASE_TAG} -m "Istio Release ${RELEASE_TAG}" ${AUTH_TAG}
$ git push --tags origin
Go to Mixer stable artifacts
job and click on Build with Parameters.
Replace BRANCH_SPEC with the value of ${RELEASE_TAG}
Go to Pilot stable artifacts
job and click on Build with Parameters.
Replace BRANCH_SPEC with the value of ${RELEASE_TAG}
Go to Auth stable artifacts
job and click on Build with Parameters.
Replace BRANCH_SPEC with the value of ${RELEASE_TAG}
Now we need update the tags istio.VERSION to point to the release tag.
$ ./updateVersion.sh -m docker.io/istio,${RELEASE_TAG} \
-C docker.io/istio,${RELEASE_TAG} -x docker.io/istio,${RELEASE_TAG} \
-i https://storage.googleapis.com/istio-artifacts/pilot/${RELEASE_TAG}/artifacts/istioctl
Create a commit with name "Istio Release ${RELEASE_TAG}", and a PR. Once tests are completed, merge the PR, and create an annotated tags
$ git pull origin master
$ git tag -a ${RELEASE_TAG} -m "Istio Release ${RELEASE_TAG}" ${PILOT_TAG}
$ git push --tags origin
Sync your workspace at ${RELEASE_TAG}:
$ git reset --hard ${RELEASE_TAG}
$ git clean -xdf
Create the release archives
$ ./release/create_release_archives.sh
...
Archives are available in /tmp/istio.version.A59u/archives
Open the GitHub Release page,
and edit the release that points to ${RELEASE_TAG}. Uploads the artifacts created by the previous script.
Create a PR, where you increment istio.RELEASE for the next
release and you update istio/downloadIstio.sh to point to ${RELEASE_TAG}