Skip to content

Commit 8f524a7

Browse files
author
Vaughn Dice
committed
docs(release-checklist.md): update from rc1 amended processes
1 parent f76e495 commit 8f524a7

1 file changed

Lines changed: 88 additions & 43 deletions

File tree

src/roadmap/release-checklist.md

Lines changed: 88 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -21,11 +21,13 @@ A release consists of the following artifacts:
2121
- [fluentd](https://github.com/deis/fluentd)
2222
- [logger](https://github.com/deis/logger)
2323
- [minio](https://github.com/deis/minio)
24+
- [monitor](https://github.com/deis/monitor)
2425
- [postgres](https://github.com/deis/postgres)
2526
- [registry](https://github.com/deis/registry)
2627
- [router](https://github.com/deis/router)
2728
- [slugbuilder](https://github.com/deis/slugbuilder)
2829
- [slugrunner](https://github.com/deis/slugrunner)
30+
- [stdout-metrics](https://github.com/deis/stdout-metrics)
2931
- [workflow](https://github.com/deis/workflow)
3032
- [workflow-e2e](https://github.com/deis/workflow-e2e)
3133
- [workflow-manager](https://github.com/deis/workflow-manager)
@@ -34,47 +36,92 @@ A release consists of the following artifacts:
3436
images referenced above. For example, if `$WORKFLOW_RELEASE` is `2.0.0-rc1`, the new chart would
3537
be in a new directory called `workflow-rc1`.
3638

37-
# Step 1: Create New Helm Classic Charts
39+
# Step 1: Cut repo branches and push image tags
3840

39-
First, export necessary values for `WORKFLOW_RELEASE` and `WORKFLOW_RELEASE_SHORT`:
40-
```
41-
export WORKFLOW_RELEASE=<full release name>
42-
export WORKFLOW_RELEASE_SHORT=<short form of above>
43-
```
41+
1. Once the release milestone is cleared of tickets in the workflow component repos, the release branches can be cut.
42+
43+
If only a particular repo is ready, navigate to said repo and:
44+
```
45+
git checkout master && git pull upstream master
46+
git checkout -b release-$WORKFLOW_RELEASE && git push upstream release-$WORKFLOW_RELEASE
47+
```
48+
Otherwise, for bulk-cutting all repos at the same time, we will use [sgoings/deis-workflow-group](https://github.com/sgoings/deis-workflow-group) here and in Step 2 below:
49+
```
50+
git clone git@github.com:sgoings/deis-workflow-group.git
51+
cd deis-workflow-group
52+
53+
make git-update # point all repos to latest master commits
54+
BRANCH="release-${WORKFLOW_RELEASE}" NEW="true" make git-checkout-branch
55+
BRANCH="release-${WORKFLOW_RELEASE}" make git-push-branch #(can use DRY_RUN=true)
56+
```
57+
58+
2. tag and push docker images to 'staging' `deisci` org
59+
```
60+
TAG="${WORKFLOW_RELEASE}" ORG="deisci" make docker-tag docker-push #(can use DRY_RUN=true)
61+
```
62+
63+
# Step 2: Create New Helm Classic Charts
4464

4565
Next, we'll create new [Helm Classic](https://github.com/helm/helm-classic) charts so that we can "stage" a
4666
version of our release for testing. Here is the current process to do so:
4767

48-
1. Create a new branch in [deis/charts](https://github.com/deis/charts): `git checkout -b release-$WORKFLOW_RELEASE origin/master`
68+
1. Create a new branch in [deis/charts](https://github.com/deis/charts): `git checkout -b release-$WORKFLOW_RELEASE upstream/master`
69+
4970
2. Download the [deisrel](https://github.com/deis/deisrel) binary via the bintray link provided in the project's README and place it in your `$PATH`
50-
3. Stage copies of all files needing release updates into the appropriate `workflow-$WORKFLOW_RELEASE_SHORT(-e2e)` chart directories. (Note: `deisrel` will automatically fetch the latest commit sha values from the `master` branch of each repo to populate the appropriate component's `dockerTag` in `tpl/generate_params.toml`):
71+
72+
3. Copy the current `dev` charts into new `workflow-$WORKFLOW_RELEASE_SHORT` charts:
73+
```console
74+
cp -r workflow-dev workflow-$WORKFLOW_RELEASE_SHORT
75+
cp -r workflow-dev-e2e workflow-$WORKFLOW_RELEASE_SHORT-e2e
5176
```
52-
deisrel helm-stage --stagingDir workflow-$WORKFLOW_RELEASE_SHORT workflow
53-
deisrel helm-stage --stagingDir workflow-$WORKFLOW_RELEASE_SHORT-e2e e2e
77+
78+
4. Stage copies of all files needing release updates into the appropriate `workflow-$WORKFLOW_RELEASE_SHORT(-e2e)` chart directories:
79+
```console
80+
deisrel helm-stage --tag $WORKFLOW_RELEASE --stagingDir workflow-$WORKFLOW_RELEASE_SHORT workflow
81+
deisrel helm-stage --tag $WORKFLOW_RELEASE --stagingDir workflow-$WORKFLOW_RELEASE_SHORT-e2e e2e
5482
```
55-
4. Delete the `KUBERNETES_POD_TERMINATION_GRACE_PERIOD_SECONDS` env var from `workflow-$WORKFLOW_RELEASE_SHORT/tpl/deis-controller-rc.yaml`
56-
5. Commit your changes:
83+
84+
5. Delete the `KUBERNETES_POD_TERMINATION_GRACE_PERIOD_SECONDS` env var from `workflow-$WORKFLOW_RELEASE_SHORT/tpl/deis-controller-rc.yaml`
85+
86+
6. Test the chart and make sure it installs:
87+
```console
88+
cp -r workflow-$WORKFLOW_RELEASE_SHORT* `helmc home`/workspace/charts
89+
helmc generate workflow-$WORKFLOW_RELEASE_SHORT
90+
helmc install workflow-$WORKFLOW_RELEASE_SHORT
91+
```
92+
93+
Optionally, run the e2e tests as well:
94+
```console
95+
helmc generate workflow-$WORKFLOW_RELEASE_SHORT-e2e
96+
helmc install workflow-$WORKFLOW_RELEASE_SHORT-e2e (to run the e2e tests)
5797
```
98+
99+
7. Commit your changes:
100+
```console
58101
git commit -a -m "chore(workflow-$WORKFLOW_RELEASE_SHORT): releasing workflow-$WORKFLOW_RELEASE_SHORT(-e2e)"
59102
```
60-
6. Push your changes: `git push origin HEAD:release-$WORKFLOW_RELEASE`.
61-
7. Open a pull request from your branch to merge into `master` on https://github.com/deis/charts
62103

63-
# Step 2: Kick off Jenkins Job
104+
8. Push your changes: `git push upstream HEAD:release-$WORKFLOW_RELEASE`.
105+
106+
9. Open a pull request from your branch to merge into `master` on https://github.com/deis/charts
107+
108+
# Step 3: Kick off Jenkins Jobs
64109

65110
Navigate to https://ci.deis.io/job/workflow-test-release/ and kick off a new job with appropriate build parameters filled out, i.e. `HELM_REMOTE_BRANCH=$WORKFLOW_RELEASE` and `RELEASE=$WORKFLOW_RELEASE_SHORT`
66111

67-
As of this writing, the e2e tests in this job are run on a GKE cluster using default (minio) external storage.
112+
As of this writing, the e2e tests in this job are run on a GKE cluster using default (minio) storage. To kick off the supported external storage permutations, run https://ci.deis.io/job/storage_backend_e2e/ w/ `STORAGE_TYPE` of 'gcs' and 'aws', along with the other
113+
values used in job above.
68114

69-
# Step 3: Update Documentation
115+
# Step 4: Update Documentation
70116

71117
Create a new pull request against deis/workflow, updating all references of the old release to
72-
`$WORKFLOW_RELEASE`. Use `git grep $WORKFLOW_OLD_RELEASE` to find any references.
118+
`$WORKFLOW_RELEASE`. Use `git grep $WORKFLOW_OLD_RELEASE` to find any references. (Be careful not to
119+
change `CHANGELOG.md`)
73120

74121
Also, note there may be an occurrence of the previous oldest release (prior to `$WORKFLOW_OLD_RELEASE`) in
75122
`upgrading-workflow.md`. This should be changed to `$WORKFLOW_OLD_RELEASE`.
76123

77-
# Step 4: Manual Testing
124+
# Step 5: Manual Testing
78125

79126
After the chart is created with the immutable Docker image tags that represent the final images
80127
(i.e. the ones that will be re-tagged to the immutable release tag, such as `2.0.0-rc1`), it
@@ -93,48 +140,46 @@ Amazon S3 |
93140

94141

95142
!!! note
143+
96144
If bugs are found and fixes are made, do the following:
97145

98-
- Update the appropriate docker tag(s) in the `generate_params.toml` file
99-
- Push this change to the release branch
146+
- PR the fix, get it reviewed and merged into master of component repo(s)
147+
- git cherry-pick <issue_fix_sha> into the `release-$WORKFLOW_RELEASE` branch(es) of component repo(s)
148+
- retag the `git-<issue_fix_sha>` image with `$WORKFLOW_RELEASE` and push to 'staging' `deisci` quay org.
100149

101-
# Step 5: Tag and Push Docker Images
150+
# Step 6: Tag and Push Docker Images
102151

103152
After everyone has tested and determined that there are no show-stopping problems for this release,
104153
it's time to tag each individual Docker image with `$WORKFLOW_RELEASE`.
105154

106155
To do so, simply go back to the directory where you checked out the `deis-workflow-group` repo
107-
and run the following two commands to tag and push updated docker images:
156+
and run the following two commands to tag and push updated docker images to the 'prod' `deis` quay org:
108157

109158
```console
110-
make git-update
111-
TAG=$WORKFLOW_RELEASE make docker-tag docker-push
159+
BRANCH="release-$WORKFLOW_RELEASE" make git-checkout-branch
160+
TAG=$WORKFLOW_RELEASE ORG="deis" make docker-tag docker-push
112161
```
113162

114-
# Step 6: Update Helm Classic Chart
163+
# Step 7: Update Helm Classic Chart
115164

116165
Now that new Docker images are on public Docker repositories, it's time to update the Helm Classic chart
117166
to reference the official images. We will use `deisrel` to do this. The following will change every `dockerTag` value
118167
to the same `$WORKFLOW_RELEASE` as well as now pointing to the `deis` quay org.
119168

120-
```
121-
deisrel helm-params --stage --tag $WORKFLOW_RELEASE --org deis workflow
122-
deisrel helm-params --stage --tag $WORKFLOW_RELEASE --org deis e2e
123-
```
124-
125-
Copy the updated files back into charts:
126-
```
127-
cp -r staging/workflow-dev/* workflow-$WORKFLOW_RELEASE_SHORT
128-
cp -r staging/workflow-dev-e2e/* workflow-$WORKFLOW_RELEASE_SHORT-e2e
169+
```console
170+
cd <back_to_charts_dir>
171+
deisrel helm-stage --tag $WORKFLOW_RELEASE --stagingDir workflow-$WORKFLOW_RELEASE_SHORT --org deis workflow
172+
deisrel helm-stage --tag $WORKFLOW_RELEASE --stagingDir workflow-$WORKFLOW_RELEASE_SHORT-e2e --org deis e2e
129173
```
130174

131-
Double-check that `workflow-dev/tpl/generate_params.toml`, has the value `https://versions.deis.com` for `versionsApiURL` entry under `workflowManager`.
132-
133175
When you're done, commit and push your changes. You should get your pull request reviewed and merged before continuing.
134176

135-
**Note:** If non-release-specific amendments have been made to the release chart that do not exist in the `workflow-dev`, be sure to PR said changes for this chart as well.
177+
!!! note
178+
179+
If non-release-specific amendments have been made to the release chart that do
180+
not exist in the `workflow-dev`, be sure to PR said changes for this chart as well.
136181

137-
# Step 7: Update Changelogs
182+
# Step 8: Update Changelogs
138183

139184
At this point, part of the first part and all of the second part of the release is complete.
140185
That is, the Helm Classic chart for the new Workflow version is done, and new Docker versions for all
@@ -166,23 +211,23 @@ git push -u $YOUR_FORK_REMOTE release-$WORKFLOW_RELEASE_SHORT
166211

167212
Before you continue, ensure pull requests in all applicable repositories are reviewed, and merge them.
168213

169-
# Step 8: Tag and Push Git Repositories
214+
# Step 9: Tag and Push Git Repositories
170215

171216
The final step of the release process is to tag each git repository, and push the tag to each
172217
GitHub project. To do so, simply run the below command in the `deisrel` repository:
173218

174219
```console
175-
deisrel git tag $WORKFLOW_RELEASE
220+
deisrel git tag --ref release-$WORKFLOW_RELEASE $WORKFLOW_RELEASE
176221
```
177222

178-
# Step 9: Close GitHub Milestones
223+
# Step 10: Close GitHub Milestones
179224

180225
Close the github milestone by creating a new pull request at
181226
[seed-repo](https://github.com/deis/seed-repo). Any changes merged to master on that repository
182227
will be applied to all of the component projects. If there are open issues attached to the
183228
milestone, move them to the next upcoming milestone before merging the pull request.
184229

185-
# Step 10: Let Everyone Know
230+
# Step 11: Let Everyone Know
186231

187232
Jump in #company on slack and let folks know that the release has been cut! This will let
188233
folks in supporting functions know that they should start the release support process including

0 commit comments

Comments
 (0)