Skip to content

Commit 5ccfc57

Browse files
author
Vaughn Dice
committed
docs(release-checklist.md): update with latest processes
1 parent ae84d07 commit 5ccfc57

1 file changed

Lines changed: 71 additions & 48 deletions

File tree

src/roadmap/release-checklist.md

Lines changed: 71 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -34,43 +34,53 @@ A release consists of the following artifacts:
3434
images referenced above. For example, if `$WORKFLOW_RELEASE` is `2.0.0-beta3`, the new chart would
3535
be in a new directory called `workflow-beta3`.
3636

37-
# Step 1: Get the Status of all Components
37+
# Step 1: Create New Helm Classic Charts
3838

39-
First, we'll need to get the statuses of all repositories that house the components we're
40-
interested in upgrading. We'll use
41-
[sgoings/deis-workflow-group](https://github.com/sgoings/deis-workflow-group) to do that in one
42-
place. That repository is a group of git submodules with all of the applicable repositories in it,
43-
so that we can manage everything from one place.
44-
45-
Clone that repository to any location on your local machine, update all submodules and list
46-
the latest commit for each submodule:
47-
48-
```console
49-
git clone https://github.com/sgoings/deis-workflow-group
50-
cd deis-workflow-group
51-
make git-update
52-
git submodule status
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>
5343
```
5444

55-
Keep the list of commit SHAs handy - you'll need it for later.
56-
57-
# Step 2: Create a New Helm Classic Chart
58-
59-
Next, we'll create a new [Helm Classic](https://github.com/helm/helm-classic) chart so that we can "stage" a
60-
version of our release for testing. The process is fairly simple:
61-
62-
1. Create a new branch: `git checkout -b release-$WORKFLOW_RELEASE`
63-
2. Copy the existing `dev` chart: `cp -r workflow-dev workflow-$WORKFLOW_RELEASE_SHORT`
64-
3. Modify the `workflow-$WORKFLOW_RELEASE_SHORT/tpl/generate_params.toml` file to ensure that all
65-
`dockerTag` values look like `git-$COMPONENT_SHA_SHORT`, where `$COMPONENT_SHA_SHORT` is the first
66-
7 characters of the applicable SHA that you got in the previous step.
67-
4. Ensure that all `DEBUG` variables in manifests are `false`.
68-
5. Delete the `KUBERNETES_POD_TERMINATION_GRACE_PERIOD_SECONDS` env var from `tpl/deis-controller-rc.yaml`
69-
6. Commit your changes: `git commit -a -m "chore(workflow-$WORKFLOW_RELEASE_SHORT): releasing workflow-$WORKFLOW_RELEASE_SHORT"`
70-
7. Push your changes to your fork: `git push -u $YOUR_FORK_REMOTE release-$DEIS_RELEASE`. Note that
71-
`$YOUR_FORK_REMOTE` is the git URI to the remote of your `deis/charts` fork. Mine is `git@github.com:arschles/deis-charts.git`, for example.
72-
8. Do steps 2-5 with the `workflow-beta3-e2e` directory
73-
9. Open a pull request from your branch to merge into `master` on https://github.com/deis/charts
45+
Next, we'll create new [Helm Classic](https://github.com/helm/helm-classic) charts so that we can "stage" a
46+
version of our release for testing. Here is the current process to do so:
47+
48+
1. Create a new branch in [deis/charts](https://github.com/deis/charts): `git checkout -b release-$WORKFLOW_RELEASE origin/master`
49+
2. Copy the existing `dev` charts:
50+
```
51+
cp -r workflow-dev workflow-$WORKFLOW_RELEASE_SHORT
52+
cp -r workflow-dev-e2e workflow-$WORKFLOW_RELEASE_SHORT-e2e
53+
```
54+
3. For the next few steps, we'll work with [deisrel](https://github.com/deis/deisrel):
55+
* Download the binary from the link in the project's `README` and place it in your `$PATH`
56+
* Stage copies of the `tpl/generate_params.toml` for each chart into staging. `deisrel` will automatically populate the latest commit sha values for each component's `dockerTag`:
57+
```
58+
deisrel helm-params --stage workflow
59+
deisrel helm-params --stage e2e
60+
```
61+
* Stage copies of the additional files in `workflow-dev(-e2e)` charts needing release value updates into staging (i.e., `Chart.yaml`, `README.md`, etc.)
62+
```
63+
deisrel helm-stage workflow
64+
deisrel helm-stage e2e
65+
```
66+
* Copy these staged files back to the correlating chart directories created in step 2 above:
67+
```
68+
cp -r staging/workflow-dev/* workflow-$WORKFLOW_RELEASE_SHORT
69+
cp -r staging/workflow-dev-e2e/* workflow-$WORKFLOW_RELEASE_SHORT-e2e
70+
```
71+
4. Delete the `KUBERNETES_POD_TERMINATION_GRACE_PERIOD_SECONDS` env var from `workflow-$WORKFLOW_RELEASE_SHORT/tpl/deis-controller-rc.yaml`
72+
5. Commit your changes:
73+
```
74+
git commit -a -m "chore(workflow-$WORKFLOW_RELEASE_SHORT): releasing workflow-$WORKFLOW_RELEASE_SHORT(-e2e)"
75+
```
76+
6. Push your changes: `git push origin HEAD:release-$WORKFLOW_RELEASE`.
77+
7. Open a pull request from your branch to merge into `master` on https://github.com/deis/charts
78+
79+
# Step 2: Kick off Jenkins Job
80+
81+
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`
82+
83+
As of this writing, the e2e tests in this job are run on a GKE cluster using default (minio) external storage.
7484

7585
# Step 3: Manual Testing
7686

@@ -94,7 +104,7 @@ Amazon S3 |
94104
If bugs are found and fixes are made, do the following:
95105

96106
- Update the appropriate docker tag(s) in the `generate_params.toml` file
97-
- Run `make git-update` in the aforementioned `deis-workflow-group` repository
107+
- Push this change to the release branch
98108

99109
# Step 4: Tag and Push Docker Images
100110

@@ -105,21 +115,28 @@ To do so, simply go back to the directory where you checked out the `deis-workfl
105115
and run the following two commands to tag and push updated docker images:
106116

107117
```console
118+
make git-update
108119
TAG=$WORKFLOW_RELEASE make docker-tag docker-push
109120
```
110121

111122
# Step 5: Update Helm Classic Chart
112123

113124
Now that new Docker images are on public Docker repositories, it's time to update the Helm Classic chart
114-
to reference the official images. To do so, simply modify all `dockerTag` entries in the
115-
`generate_params.toml` files in the `workflow-$WORKFLOW_RELEASE_SHORT` and
116-
`workflow-$WORKFLOW_RELEASE_SHORT-e2e` to be `$WORKFLOW_RELEASE` (instead of the ones based on git tags).
125+
to reference the official images. We will use `deisrel` to do this. The following will change every `dockerTag` value
126+
to the same `$WORKFLOW_RELEASE` as well as now pointing to the `deis` quay org.
117127

118-
Additionally, we want the official release chart to reference the production `versions.deis.com` API. Also in `generate_params.toml`, modify the `versionsApiURL` entry under `workflowManager` to have the value `https://versions.deis.com`.
128+
```
129+
deisrel helm-params --stage --tag $WORKFLOW_RELEASE --org deis workflow
130+
deisrel helm-params --stage --tag $WORKFLOW_RELEASE --org deis e2e
131+
```
119132

120-
Also, ensure that the `README.md` and `Chart.yaml` files in the new helm classic chart have updated references to the chart. For example, references to `helmc install workflow-betaX` should become `helmc install workflow-$WORKFLOW_RELEASE_SHORT`
133+
Copy the updated files back into charts:
134+
```
135+
cp -r staging/workflow-dev/* workflow-$WORKFLOW_RELEASE_SHORT
136+
cp -r staging/workflow-dev-e2e/* workflow-$WORKFLOW_RELEASE_SHORT-e2e
137+
```
121138

122-
If you find any references that should be bumped, open a pull-request against the documentation.
139+
Double-check that `workflow-dev/tpl/generate_params.toml`, has the value `https://versions.deis.com` for `versionsApiURL` entry under `workflowManager`.
123140

124141
When you're done, commit and push your changes. You should get your pull request reviewed and merged before continuing.
125142

@@ -143,7 +160,8 @@ To generate changelogs, run the below command in each repository. Ensure that `$
143160
the previous tag that was generated in the repository.
144161

145162
```console
146-
_scripts/generate_changelog.sh $PREVIOUS_TAG
163+
$PREVIOUS_TAG=<previous release tag> make update-changelog # if make recipe exists (as in builder)
164+
_scripts/generate_changelog.sh $PREVIOUS_TAG # if make recipe doesn't exist (as in most repos)
147165
```
148166

149167
This command will output the new changelog entry to STDOUT. Copy it and prepend it to the
@@ -158,8 +176,8 @@ in Step 9 can start preparing supporting content for the release.
158176
Finally, commit, push and submit a pull request for your changes:
159177

160178
```console
161-
git commit CHANGELOG.md -m "doc(CHANGELOG.md): add entry for $WORKFLOW_RELEASE_SHORT"
162-
git push -u $YOUR_FORK_REMOTE $WORKFLOW_RELEASE_SHORT
179+
git commit CHANGELOG.md -m "doc(CHANGELOG.md): add entry for $WORKFLOW_RELEASE"
180+
git push -u $YOUR_FORK_REMOTE release-$WORKFLOW_RELEASE_SHORT
163181
```
164182

165183
Before you continue, ensure pull requests in all applicable repositories are reviewed, and merge
@@ -168,10 +186,10 @@ them.
168186
# Step 7: Tag and Push Git Repositories
169187

170188
The final step of the release process is to tag each git repository, and push the tag to each
171-
GitHub project. To do so, simply run the below command in the `deis-workflow-group` repository:
189+
GitHub project. To do so, simply run the below command in the `deisrel` repository:
172190

173191
```console
174-
TAG=$WORKFLOW_RELEASE TAG_MESSAGE="releasing workflow $WORKFLOW_RELEASE" make git-tag git-tag-push
192+
deisrel git tag $WORKFLOW_RELEASE
175193
```
176194

177195
# Step 8: Close GitHub Milestones
@@ -185,7 +203,12 @@ milestone, move them to the next upcoming milestone before merging the pull requ
185203

186204
Jump in #company on slack and let folks know that the release has been cut! This will let
187205
folks in supporting functions know that they should start the release support process including
188-
summary blog posts, tweets, notes for the monthly newsletter updates, etc. Providing a
189-
gist to the aggregated release notes would be super-fly.
206+
summary blog posts, tweets, notes for the monthly newsletter updates, etc.
207+
208+
Provide a gist to the aggregated release notes. We can generate the aggregated changelog data from `deisrel`:
209+
210+
```console
211+
deisrel generate-changelog $PREVIOUS_TAG $WORKFLOW_RELEASE
212+
```
190213

191214
You are now done with the release.

0 commit comments

Comments
 (0)