Skip to content

Commit

Permalink
Split release procedure into rc and formal tracks
Browse files Browse the repository at this point in the history
  • Loading branch information
ryanio committed Apr 14, 2020
1 parent 0871b6d commit caba94c
Showing 1 changed file with 38 additions and 23 deletions.
61 changes: 38 additions & 23 deletions RELEASE.md
Original file line number Diff line number Diff line change
Expand Up @@ -70,46 +70,61 @@ Because breaking changes are always happening during the development of a projec

The following describes the steps required to release a new version of `web3.js`. It is followed to adhere to community standards and expectations.

## Release Procedure
## Release Candidate (RC) Release Procedure

1. Create a GitHub draft release.
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 version number in `packages/web3/package.json`.
1. Update root package version number in `package.json`.
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. Move section header `[Unreleased]` to bottom.
1. Add next anticipated release version number to bottom (as a placeholder for new changelog entries).
1. Create minified build from release branch.
1. Run `npm run build` (runs gulp task).
1. For `1.x`, ensure minified file is available in release PR, since some projects will use for release candidate tests. For `2.x`, no minified file is needed.
1. Create release PR ([example](https://github.com/ethereum/web3.js/pull/3351)).
1. Request review from key contributors:
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. 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. 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. Activate the new version.
1. Request PR review from key contributors:
1. Chris from EthereumJS ([@cgewecke](https://github.com/cgewecke))
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. Check `npm run build-all` runs with success.
1. (tests if webpack can bundle each standalone package)
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. 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. Run `npm run release`.
1. Run `git push` of release commit.
1. Ensure tags (created automatically by lerna) are pushed.
1. e.g.`git push ethereum release/1.2.7 --follow-tags`

## 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. 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. Activate the new version
1. Set the version to default if release is `major` or `minor`
1. Apply appropriate `npm` tags to release, like `rc`.
1. Try the cmd: `lerna 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. If non-`rc`, share the release announcement on:
1. Activate the new version.
1. Set the version to default if release is `major` or `minor`.
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.)
1. Twitter
1. Gitter
Expand Down

0 comments on commit caba94c

Please sign in to comment.