Skip to content

gargnupur/pipeline

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Introduction

This repository is used to kick off new Istio releases. Updating a parameter file and sending out a git pull request triggers release automation to build release artifacts, run release qualification tests, and if all required tests have passed, publish the release artifacts to the final release destination.

Starting a New Release

One Time Setup

Fork and clone this repository in your github environnment. You will start a new release by sending out a pull request.

Trigger a New Daily Release

You can kick off a new daily release by running the following command.

GIT_BRANCH={branch} ./scripts/trigger_daily_release.sh

You must provide the release branch where you want to build the release from. The script automatically determines the latest branch SHA and the release version using the branch name and timestamp, checks out the right branch, and updates [daily/release_params.sh] (https://github.com/istio-releases/pipeline/blob/master/daily/release_params.sh).

All you need to do is to send a new pull request containing the updated parameter file to trigger a kick off a new daily release. As a convention, please use "DAILY " as the PR title.

Understanding Release Pull Request

A release pull request first triggers a prow job named "prow/release-build", which builds request artifacts and make them available for testing. This step also builds docker images, and have them pushed to a public registry.

Once "prow/release-build" completes, the test jobs are started. This is the release qualification step which consumes the release artifacts and make sure they are up to a certain standard, including:

  • istio/istio unit and integration tests
  • istio/istio E2E tests (using the release images)
  • istioctl tests
  • upgrade/downupgrade tests

You can monitor both the build and test status and log in the PR. In particular, you can find the build log in the "prow/release-build" log.

example

Test failures will be retried up to three times. Once all tests have passed, the pull request will be merged automatically. A post-submit job will do all the heavy lifting of publishing release artifacts to the right place. You can find the post-submit job at http://prow.istio.io/?repo=istio-releases%2Fpipeline&type=postsubmit.

Kick off a Monthly Release

Similar to daily releases, a monthly (or LTS/patch) release can be kicked off by sending out a new pull request. As the monthly release parameters can typically determined manually, you can first check out the right release branch (e.g. release-1.1), and modify the parameters directly in [monthly/release_params.sh] (https://github.com/istio-releases/pipeline/blob/master/monthly/release_params.sh).

export CB_BRANCH=master
export CB_COMMIT=f927d1ec433cecc6f66fcdcc0af38327b70efa68
export CB_PIPELINE_TYPE=monthly
export CB_VERSION=1.2.0-snapshot.0

You can even configure some advanced release parameters if you know what you are doing. Example: https://github.com/istio-releases/pipeline/pull/102/files

And then you can send a PR with this file change to trigger release automation. As a convention, please use "MONTHLY " as the PR title.

Monitoring

You can find all the request pull requests in https://github.com/istio-releases/pipeline/pulls. And you can find the build and test log in the presubmit jobs of these pull requests.

All presubmit and postsubmit jobs that run in this repository can be found at https://prow.istio.io/?repo=istio-releases%2Fpipeline

Maintenance

Maintainer Setup

As a maintainer, make sure you have write permission on this repositroy. Then, set an environment variable GITHUB_TOKEN_FILE point to a local file that contains your github token (create one at https://github.com/settings/tokens if you do not have any).

With this, running scripts/trigger_daily_release.sh will create a temporary branch and a pull request for you automatically.

Daily Release Location

Monthly/LTS/Patch Release Location

Scheduled Jobs

Daily releases are simply scheduled jobs that invokes ./scripts/trigger_daily_release.sh daily. These jobs can be found at:

There is also a janitor job that runs every 30 minutes. It goes through all the open release pull requests in istio-releases/pipeline, merges the requests that have all tests passed, closes the requests that have expired, and triggers retest in case a test fails. The job can be found at http://prow.istio.io/?type=periodic&job=release-requests-janitor

Prow Config

Build, test, and release config can be found at https://github.com/istio/test-infra/tree/master/prow/cluster/jobs/istio-releases/pipeline. Each branch has its own configuration. If you want to add a new release test, this is where you should look.

The scheduled jobs config can be found at https://github.com/istio/test-infra/blob/master/prow/cluster/jobs/all-periodics.yaml

About

Istio Release Pipeline

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Shell 100.0%