|
2 | 2 |
|
3 | 3 | This checklist should be worked through when releasing a new Serverless version.
|
4 | 4 |
|
| 5 | +More info about our release process can be found in the [`RELEASE_PROCESS.md`](./RELEASE_PROCESS.md) document. |
| 6 | + |
5 | 7 | ## Pre-Release
|
| 8 | + |
6 | 9 | - [ ] Look through all open issues and PRs (if any) of that milestone and close them / move them to another
|
7 | 10 | milestone if still open
|
8 |
| -- [ ] Look through all closed issues and PRs of that milestone to see what has changed. Run `./scripts/pr-since-last tag` or if you want to run against a specific tag `./scripts/pr-since-last tag v1.0.3` to get a list of all merged PR's since a specific tag |
9 |
| -- [ ] Close milestone on Github |
10 |
| -- [ ] Create a new release in GitHub for Release Notes (including breaking changes) |
| 11 | +- [ ] Look through all closed issues and PRs of that milestone to see what has changed. Run `./scripts/prs-since-last tag` or if you want to run against a specific tag `./scripts/prs-since-last tag v1.20.0` to get a list of all merged PR's since a specific tag |
| 12 | +- [ ] Close milestone on GitHub |
| 13 | +- [ ] Create a new draft release in GitHub |
11 | 14 |
|
12 | 15 | # Testing
|
| 16 | + |
13 | 17 | - [ ] Create a Serverless service (with some events), deploy and test it intensively
|
14 |
| -- [ ] Run integration test repository against the current release |
15 | 18 | - [ ] Look through the milestone and test all of the new major changes
|
16 |
| -- [ ] Run "npm test" |
17 |
| -- [ ] Run "npm run simple-integration-test" |
18 |
| -- [ ] Run "npm run complex-integration-test" |
| 19 | +- [ ] Run `npm test` |
| 20 | +- [ ] Run `npm run simple-integration-test` |
| 21 | +- [ ] Run `npm run complex-integration-test` |
19 | 22 |
|
20 | 23 | ## Prepare Package
|
21 |
| -- [ ] Create a new branch to bump version in package.json |
22 |
| -- [ ] Install the latest NPM version or Docker container with latest Node and NPM |
23 |
| -- [ ] Bump version in package.json, remove `node_modules` folder and run `npm install` and `npm prune --production && npm shrinkwrap` |
24 |
| -- [ ] Update CHANGELOG.md (including breaking changes) |
| 24 | + |
| 25 | +- [ ] Create a new branch to bump version in `package.json` |
| 26 | +- [ ] Install the latest `npm` version or Docker container with latest `node` and `npm` |
| 27 | +- [ ] Bump version in `package.json`, remove `node_modules` folder and run `npm install` and `npm prune --production && npm shrinkwrap` |
| 28 | +- [ ] Look through closed PRs and update `CHANGELOG.md` |
25 | 29 | - [ ] Make sure all files that need to be pushed are included in `package.json -> files`
|
26 | 30 | - [ ] Send PR and merge PR with new version to be released
|
27 |
| -- [ ] Go back to branch you want to release from (e.g. master or v1) and pull bumped version changes from Github |
| 31 | +- [ ] Add the changes you made to `CHANGELOG.md` to the description of the GitHub release draft |
| 32 | +- [ ] Go back to branch you want to release from (e.g. `master`) and pull bumped version changes from GitHub |
28 | 33 | - [ ] Make sure there are no local changes to your repository (or reset with `git reset --hard HEAD`)
|
29 |
| -- [ ] Check package.json and npm-shrinkwrap.json version config to make sure it fits what we want to release. *DO THIS, DON'T SKIP, DON'T BE LAZY!!!* |
| 34 | +- [ ] Check `package.json`, `package-lock.json` and `npm-shrinkwrap.json` version config to make sure it fits what we want to release |
30 | 35 |
|
31 |
| -## Git Tagging |
32 |
| -- [ ] Create a git tag with the version (`git tag <VersionName>`: `git tag v1.0.0`) |
33 |
| -- [ ] Push the git tag (`git push origin <VersionName>`) |
| 36 | +## Releasing |
34 | 37 |
|
35 |
| -## Segment Configuration |
36 |
| -- [ ] Update Segment.io key in [segment.js file](https://github.com/serverless/serverless/blob/d31057239d232181128d978c392bdecbcb9fcf1b/lib/utils/segment.js#L7) (never push the key to GitHub and revert afterwards with `git checkout .`) |
37 |
| -- [ ] Check twice if you've used the correct key (**if in doubt ask which one to pick!**) |
38 |
| -- [ ] Run `./bin/serverless help` and filter for this new version in the Segment debugger to make sure data is sent to Segment for this new version |
39 |
| - |
40 |
| -## Release to NPM |
41 |
| -- [ ] Log into npm (`npm login`) |
42 |
| -- [ ] Publish to NPM (`npm publish —-tag <TagForInstall>`, e.g. `npm publish --tag beta` or `npm publish` to release latest production framework) |
43 |
| -- [ ] Update Alpha/Beta accordingly so they point to the latest release. If its an Alpha Release the Beta tag should point to the latest stable release. This way Alpha/Beta always either point to something stable or the highest priority release in Alpha/Beta stage (`npm dist-tag add serverless@<VERSION> alpha`, `npm dist-tag add serverless@<VERSION> beta`) |
| 38 | +- [ ] Publish the GitHub release draft (Travis CI will automatically publish the new release to `npm`) |
44 | 39 |
|
45 | 40 | ## Validate Release
|
46 |
| -- [ ] Validate NPM install works (`npm install -g serverless@<TagForInstall>` or `npm install -g serverless` if latest is released) |
47 |
| -- [ ] Check Segment.com production data if events are coming in correctly with the new version |
48 |
| -- [ ] Make sure you run `git checkout .` to revert adding Segment write key |
| 41 | + |
| 42 | +- [ ] Validate that `npm install` works (`npm install -g serverless@<new-tag>` or `npm install -g serverless` if latest is released) |
49 | 43 |
|
50 | 44 | ## Post-Release
|
| 45 | + |
51 | 46 | - [ ] Run `./scripts/generate-release-contributors-list <old-tag> <new-tag>` and hand the generated list over to the release blog post author
|
0 commit comments