Skip to content

Commit fc63a95

Browse files
authored
Merge pull request #525 from mboersma/release-doc-updates
docs(releases): add missing details and reword CI flow reference
2 parents 5b6a900 + b5f2d99 commit fc63a95

1 file changed

Lines changed: 33 additions & 27 deletions

File tree

src/roadmap/releases.md

Lines changed: 33 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -55,18 +55,14 @@ upgrading to a patch or to a minor release will not break anything.
5555
Most Deis projects are "components" which produce a Docker image or binary executable as a
5656
deliverable. This section leads a maintainer through creating a component release.
5757

58-
For flow diagrams representing the stages a component code change may take on its path to production,
59-
please see [this link](https://github.com/deis/jenkins-jobs/#flow). One common release pipeline
60-
failure that can occur is if a release candidate cannot be located. This would be due to a failing
61-
[master merge pipeline](https://github.com/deis/jenkins-jobs/#when-a-component-pr-is-merged-to-master)
62-
and so this pipeline would need to be rerun to success - using the commit to be tagged in Step 2 below - before the release can be (re-)initiated.
63-
6458
### Step 1: Update Code and Set Environment variables
6559

6660
In the component repository, update from the GitHub remote and ensure `HEAD` is the commit
6761
intended for release. Major or minor releases should happen on the master branch. Patch releases
6862
should check out the previous release tag and cherry-pick specific commits from master.
6963

64+
Make sure you have the [deisrel][] release tool in your `$PATH`.
65+
7066
Double-check that `git log` looks correct, then set some environment variables:
7167
```bash
7268
export COMPONENT=${PWD##*/}
@@ -99,6 +95,20 @@ deisrel changelog individual $COMPONENT $NEW_RELEASE | pbcopy
9995
open https://github.com/deis/$COMPONENT/releases/new?tag=$NEW_RELEASE
10096
```
10197

98+
### Step 4: Verify the Component is Available
99+
100+
Tagging the component (see [Step 2](/roadmap/releases/#step-2-push-the-release-tag))
101+
starts a CI job that eventually results in an artifact being made available for public download.
102+
Please see the [CI flow diagrams](https://github.com/deis/jenkins-jobs/#flow) for details.
103+
104+
Double-check that the artifact is available, either by a `docker pull` command or by running the
105+
appropriate installer script.
106+
107+
If the artifact can't be downloaded, ensure that its CI release jobs are still in progress, or
108+
fix whatever issue arose in the pipeline. For example, the
109+
[master merge pipeline](https://github.com/deis/jenkins-jobs/#when-a-component-pr-is-merged-to-master)
110+
may have failed to promote the `:git-abc1d23` candidate image and needs to be restarted with
111+
that component and commit.
102112

103113
## How to Release Workflow
104114

@@ -120,7 +130,8 @@ export WORKFLOW_RELEASE=v2.5.0 WORKFLOW_PREV_RELEASE=v2.4.2 # for example
120130
### Step 2: Update Jenkins Jobs
121131

122132
Update the Workflow chart release value in the
123-
[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
133+
[common.groovy](https://github.com/deis/jenkins-jobs/blob/master/common.groovy) file so the
134+
[workflow-test-release](https://ci.deis.io/job/workflow-test-release/) job will kick off
124135
automatically when the `release-${WORKFLOW_RELEASE}` branch is pushed:
125136

126137
```bash
@@ -135,6 +146,7 @@ git push upstream HEAD:master
135146
Some Workflow components not in the Helm chart must also be tagged in sync with the release.
136147
Follow the [component release process](#how-to-release-a-component) above and ensure that
137148
these components are tagged:
149+
138150
- [deis/workflow][]
139151
- [deis/workflow-cli][]
140152
- [deis/workflow-e2e][]
@@ -197,11 +209,18 @@ Change the `workflow-$WORKFLOW_RELEASE/tpl/deis-controller-deployment.yaml` file
197209

198210
1. Remove the `KUBERNETES_POD_TERMINATION_GRACE_PERIOD_SECONDS` env var
199211

212+
Change any "-dev" labels to reference the new release instead, and remove test wording:
213+
214+
1. Remove "for testing only" lines in any Chart.yaml or README.md
215+
1. Replace "-dev" with the new release tag in those same files
216+
1. Don't forget the e2e and router charts
217+
1. Compare changes to the previous release charts to ensure consistency
218+
200219
Commit and push your changes:
201220

202221
```bash
203222
git commit -a -m "chore(workflow-$WORKFLOW_RELEASE): releasing workflow-$WORKFLOW_RELEASE(-e2e)"
204-
git push origin HEAD:release-$WORKFLOW_RELEASE
223+
git push upstream HEAD:release-$WORKFLOW_RELEASE
205224
```
206225

207226
Open a pull request at [deis/charts][] to merge this branch into master.
@@ -223,28 +242,13 @@ When showstopper-level bugs are found, the process is as follows:
223242
1. Update that component's `dockerTag` value in the release chart(s) to the new semver tag
224243
1. Commit and push the chart changes to the release branch and restart testing
225244

226-
### Step 6: Merge and Put CHANGELOG in GitHub Release Notes
245+
### Step 6: Release the Chart as a Component
227246

228247
When testing has completed without uncovering any new showstopper bugs and the charts PR has been
229-
reviewed successfully, merge it to master. Then update your local master branch and generate the
230-
CHANGELOG with the [`deisrel`](https://github.com/deis/deisrel.git) tool. Paste that content into
231-
an annotation on the new release tag, then push the tag:
232-
233-
```bash
234-
git checkout master && git fetch --tags upstream master && git merge upstream/master
235-
deisrel changelog individual workflow $WORKFLOW_PREV_RELEASE HEAD $WORKFLOW_RELEASE | pbcopy
236-
git tag -a $WORKFLOW_RELEASE # paste the CHANGELOG into your editor and save
237-
git push upstream $WORKFLOW_RELEASE
238-
```
248+
reviewed successfully, merge it to master. Then update your local master branch and do a
249+
[component release][] of the chart repository. Note that the [semantic version][] of the chart
250+
release is predetermined as the value of `$WORKFLOW_RELEASE`.
239251

240-
Paste the same CHANGELOG from the previous step into the body of release notes for [deis/charts][]
241-
in GitHub. In the "Release Title" field, use the project & component with its release, such as
242-
"Deis Workflow v2.5.0":
243-
244-
```bash
245-
deisrel changelog individual workflow $WORKFLOW_PREV_RELEASE HEAD $WORKFLOW_RELEASE | pbcopy
246-
open https://github.com/deis/workflow/releases/new?tag=$WORKFLOW_RELEASE
247-
```
248252

249253
### Step 7: Assemble Master Changelog
250254

@@ -308,10 +312,12 @@ Master CHANGELOG: https://deis.com/docs/workflow/changelogs/v2.5.0/
308312

309313
You're done with the release. Nice job!
310314

315+
[component release]: /roadmap/releases/#how-to-release-a-component
311316
[continuous delivery]: https://en.wikipedia.org/wiki/Continuous_delivery
312317
[deis/charts]: https://github.com/deis/charts
313318
[deis/workflow]: https://github.com/deis/workflow
314319
[deis/workflow-cli]: https://github.com/deis/workflow-cli
315320
[deis/workflow-e2e]: https://github.com/deis/workflow-e2e
321+
[deisrel]: https://github.com/deis/deisrel
316322
[Helm classic]: https://github.com/helm/helm-classic
317323
[semantic version]: http://semver.org

0 commit comments

Comments
 (0)