From c9539d0a23c80ee76150bdb14384b32652dd6bb2 Mon Sep 17 00:00:00 2001 From: Vaughn Dice Date: Tue, 6 Dec 2016 10:36:10 -0700 Subject: [PATCH] docs(src/roadmap/releases.md): update to use k/helm --- src/roadmap/releases.md | 138 ++++++++++++---------------------------- 1 file changed, 42 insertions(+), 96 deletions(-) diff --git a/src/roadmap/releases.md b/src/roadmap/releases.md index ab4e2356..a212e82a 100644 --- a/src/roadmap/releases.md +++ b/src/roadmap/releases.md @@ -121,16 +121,23 @@ fix whatever issue arose in the pipeline. For example, the may have failed to promote the `:git-abc1d23` candidate image and needs to be restarted with that component and commit. +If the component has a correlating [Kubernetes Helm][] chart, +this chart will also be packaged, signed and uploaded to its production chart repo. Please +verify it can be fetched (and verified): + +``` +$ helm repo add controller https://charts.deis.com/controller +"controller" has been added to your repositories +$ helm fetch --verify controller/controller --version v2.9.0 && echo +Verification: &{0xc42028d3b0 sha256:17b94dd854e090c6627728bdcb5e2ea588f3cb4fecc1082a5a03c909c0ed0ecd controller-v2.9.0.tgz} +``` + ## How to Release Workflow -Deis Workflow integrates multiple component releases together with a [Helm Classic][] chart +Deis Workflow integrates multiple component releases together with a [Kubernetes Helm][] chart deliverable. This section leads a maintainer through creating a Workflow release. -### Step 1: Update Code and Set Environment Variables - -In the [deis/charts][] repository, update from the GitHub remote. Major or minor releases start -from the master branch. Patch releases should check out the previous release tag and cherry-pick -specific commits from master. +### Step 1: Set Environment Variables Export two environment variables that will be used in later steps: @@ -138,21 +145,7 @@ Export two environment variables that will be used in later steps: export WORKFLOW_RELEASE=v2.9.0 WORKFLOW_PREV_RELEASE=v2.8.0 # for example ``` -### Step 2: Update Jenkins Jobs - -Update the Workflow chart release value in the -[common.groovy](https://github.com/deis/jenkins-jobs/blob/master/common.groovy) file so the -[workflow-test-release](https://ci.deis.io/job/workflow-test-release/) job will kick off -automatically when the `release-${WORKFLOW_RELEASE}` branch is pushed: - -```bash -git clone git@github.com:deis/jenkins-jobs.git -perl -i -0pe "s/${WORKFLOW_PREV_RELEASE}/${WORKFLOW_RELEASE}/" common.groovy -git commit -a -m "chore(workflow-$WORKFLOW_RELEASE): update workflow chart release value" -git push upstream HEAD:master -``` - -### Step 3: Tag Supporting Repositories +### Step 2: Tag Supporting Repositories Some Workflow components not in the Helm chart must also be tagged in sync with the release. Follow the [component release process](#how-to-release-a-component) above and ensure that @@ -162,65 +155,16 @@ these components are tagged: - [deis/workflow-cli][] - [deis/workflow-e2e][] -### Step 4: Create Helm Charts +### Step 3: Create Helm Chart -For a patch release, check out the previous tag and cherry-pick commits onto it: +To create and stage a release candidate chart for Workflow, we will build the [workflow-chart-publish](https://ci.deis.io/job/workflow-chart-publish) job with the following parameters: -```bash -git checkout -b release-$WORKFLOW_RELEASE $WORKFLOW_PREV_RELEASE -git cherry-pick 143ac41 # and so on... -``` +`CHART_REPO_TYPE=staging` and `RELEASE_TAG=$WORKFLOW_RELEASE` -For a major or minor release, copy and modify the current development charts: +This job will gather all of the latest component release tags and use these to specify the versions of all component charts. +It will then package the Workflow chart, upload it to the staging chart repo and kick off an e2e run against said chart. -```bash -git checkout -b release-$WORKFLOW_RELEASE master -_scripts/new_workflow_charts.sh -``` - -Use the `deisrel` tool to determine the latest component releases: -```bash -export GH_TOKEN= # set token to avoid rate-limiting errors -# Create a JSON file with the components for the new release -cat > components.json < $WORKFLOW_RELEASE +helm repo add deis https://charts.deis.com/workflow +helm fetch --untar deis/workflow --version $WORKFLOW_PREV_RELEASE +deisrel changelog global workflow/requirements.lock mapping.json > $WORKFLOW_RELEASE ``` To get non-component repo changelogs (presumably tagged in Step 3 above), one can issue a command like the following @@ -275,7 +222,7 @@ These can be added to the `$WORKFLOW_RELEASE` file created previously. This master changelog should then be placed into a single gist. The file will also be added to the documentation update PR created in the next step. -### Step 8: Update Documentation +### Step 7: Update Documentation Create a new pull request at [deis/workflow][] that updates version references to the new release. Use `git grep $WORKFLOW_PREV_RELEASE` to find any references, but be careful not to change @@ -290,17 +237,17 @@ Make sure to add a header to the page to make it clear that this is for a Workfl ## Workflow v2.8.0 -> v2.9.0 ``` -### Step 9: Close GitHub Milestones +### Step 8: Close GitHub Milestones Create a pull request at [seed-repo](https://github.com/deis/seed-repo) to close the release milestone and create the next one. When changes are merged to seed-repo, milestones on all relevant projects will be updated. If there are open issues attached to the milestone, move them to the next upcoming milestone before merging the pull request. -Milestones map to Deis Workflow releases in [deis/charts][]. These milestones do not correspond +Milestones map to Deis Workflow releases in [deis/workflow][]. These milestones do not correspond to individual component release tags. -### Step 10: Release Workflow CLI Stable +### Step 9: Release Workflow CLI Stable Now that the `$WORKFLOW_RELEASE` version of Workflow CLI has been vetted, we can push `stable` artifacts based on this version. @@ -313,7 +260,7 @@ $ ./deis version # (Should show $WORKFLOW_RELEASE) ``` -### Step 11: Let Everyone Know +### Step 10: Let Everyone Know Let the rest of the team know they can start blogging and tweeting about the new Workflow release. Post a message to the #company channel on Slack. Include a link to the released chart and to the @@ -329,10 +276,9 @@ You're done with the release. Nice job! [component release]: /roadmap/releases/#how-to-release-a-component [continuous delivery]: https://en.wikipedia.org/wiki/Continuous_delivery -[deis/charts]: https://github.com/deis/charts [deis/workflow]: https://github.com/deis/workflow [deis/workflow-cli]: https://github.com/deis/workflow-cli [deis/workflow-e2e]: https://github.com/deis/workflow-e2e [deisrel]: https://github.com/deis/deisrel -[Helm classic]: https://github.com/helm/helm-classic +[Kubernetes Helm]: https://github.com/kubernetes/helm [semantic version]: http://semver.org