Skip to content

Commit

Permalink
Update release steps with improvements
Browse files Browse the repository at this point in the history
  • Loading branch information
ryanio committed Apr 15, 2020
1 parent caba94c commit 81e6cd5
Showing 1 changed file with 15 additions and 26 deletions.
41 changes: 15 additions & 26 deletions RELEASE.md
Original file line number Diff line number Diff line change
Expand Up @@ -76,53 +76,42 @@ The following describes the steps required to release a new version of `web3.js`
1. [Example](https://github.com/ethereum/web3.js/releases/tag/v1.2.7-rc.0) - should contain at a minimum: release notes, changelog, any other important notes.
1. Request review on the draft release from a web3.js contributor ([@cgewecke](https://github.com/cgewecke)) for completeness, grammar, etc.
1. Create release branch (e.g. `release/1.2.7`).
1. Update root package version number in `package.json` e.g. `1.2.7-rc.0`.
1. Update individual package version numbers with e.g. `lerna version 1.2.7-rc.0 --no-push`
1. Update `CHANGELOG.md`.
1. Update and commit `CHANGELOG.md`.
1. Move section header `[Unreleased]` to bottom.
1. Add next anticipated release version number to bottom (as a placeholder for new changelog entries).
1. Run `npm run build-all`.
1. (tests if webpack can bundle each standalone package.)
1. (creates minified file for `1.x` which some projects use for release candidate tests. No minified file is needed for `2.x`.)
1. Push release branch to origin.
1. Add next anticipated release version number to bottom (as a placeholder for new changelog entries).
1. Create release commit and tags e.g. `lerna version 1.2.7-rc.0 --no-push`
1. (updates package version numbers, builds minified file (for `1.x`), creates release commit and tags.)
1. For `1.x`, save [index.html](https://github.com/ethereum/web3.js/blob/1.x/scripts/html/index.html) to your local machine and test loading minified file to ensure its integrity. Be sure to delete `index.html` after.
1. Check git working state is clean. Sometimes files modified by gulp are not included. If so, run `git commit --amend` and `git tag -d 1.2.7-rc.0` and `git tag 1.2.7-rc.0`.
1. Push release branch to origin with tags `git push origin release/1.2.7 --follow-tags`.
1. Create release PR as draft ([example](https://github.com/ethereum/web3.js/pull/3351)).
1. Ensure CI is green / passing.
1. (spend time here inspecting the CI logs to ensure everything looks valid and results were reported correctly)
1. Run lerna publish with any relevant npm dist-tags like so: `npm run publish -- --dist-tag rc`.
1. (lerna can sometimes have difficulty with the number of packages we have. If the above command is unsuccessful, then check every package and run the following command once for every package that is missing its tags: `npm dist-tag add <package-name>@<version> rc`)
1. (This might auto-run under lerna publish:) Run git push of release commit: `git push ethereum release/1.2.7 --follow-tags`
1. (ensure tags created automatically by lerna are pushed.)
1. Run `npm run publish from-package -- --dist-tag rc`.
1. Lerna can sometimes have difficulty with the number of packages we have. If the above command is unsuccessful, then check every package and run the following command once for every package that is missing its tags: `TODO add individual lerna publish cmd here` `npm dist-tag add <package-name>@<version> rc`)
1. Publish the GitHub release.
1. A GitHub Webhook should trigger the ReadTheDocs build after the release is published.
1. (The build may sometimes need to be manually triggered in ReadTheDocs admin panel.)
1. (The build may sometimes need to be manually triggered in ReadTheDocs admin panel. If the version does not appear, create a build of a previous version to refresh the list.)
1. Activate the new version.
1. Request PR review from key contributors:
1. Chris from EthereumJS ([@cgewecke](https://github.com/cgewecke))
1. Patricio from Nomic Labs ([@alcuadrado](https://github.com/alcuadrado))
1. Michael from Embark ([@michaelsbradleyjr](https://github.com/michaelsbradleyjr))
1. Nicholas from Truffle ([@gnidan](https://github.com/gnidan))
1. Patricio from Nomic Labs ([@alcuadrado](https://github.com/alcuadrado))
1. If touches or affects ENS: Nick Johnson ([@Arachnid](https://github.com/Arachnid))
1. Wait 1 week for community discourse and 2 reviewer approvals.
1. (if release is an emergency patch, time limit may be reduced relative to its severity.)
1. (if release is an emergency patch, time limit may be reduced relative to severity.)

## Formal Release Procedure

1. Create GitHub draft release from text of `rc` release.
1. Checkout release branch (e.g. `release/1.2.7`).
1. Update root package version number in `package.json` e.g. `1.2.7`.
1. Update individual package version numbers with e.g. `lerna version 1.2.7 --no-push`
1. Run `npm run build-all`.
1. Creates minified file for `1.x` which some projects use for release candidate tests. No minified file is needed for `2.x`.
1. (tests if webpack can bundle each standalone package)
1. Run lerna publish with any relevant npm dist-tags like so: `npm run publish -- --dist-tag rc`.
1. (lerna can sometimes have difficulty with the number of packages we have. If the above command is unsuccessful, then check every package and run the following command once for every package that is missing its tags: `npm dist-tag add <package-name>@<version> rc`)
1. (This might auto-run under lerna publish:) Run git push of release commit: `git push ethereum release/1.2.7 --follow-tags`
1. (ensure tags created automatically by lerna are pushed.)
1. Create and push release commit and tags: `lerna version 1.2.7`
1. Publish the GitHub release.
1. A GitHub Webhook should trigger the ReadTheDocs build after the release is published.
1. (The build may sometimes need to be manually triggered in ReadTheDocs admin panel.)
1. (The build may sometimes need to be manually triggered in ReadTheDocs admin panel. If the version does not appear, create a build of a previous version to refresh the list.)
1. Activate the new version.
1. Set the version to default if release is `major` or `minor`.
1. Set the version to default.
1. Merge release PR.
1. Share the release announcement on:
1. (_Note:_ There is a delay on npm between different regions, so all may not see the release immediately.)
Expand Down

0 comments on commit 81e6cd5

Please sign in to comment.