From d57233fc490ddd1ae9565fa4f8ca0c7ad528fabf Mon Sep 17 00:00:00 2001 From: Elliot Lee Date: Wed, 22 Mar 2023 17:07:19 -0700 Subject: [PATCH] CONTRIBUTING: update release checklist (#2238) --------- Co-authored-by: Jackson Mills --- CONTRIBUTING.md | 100 +++++++++++++++++++++++++++++++++--------------- 1 file changed, 69 insertions(+), 31 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 8e9d0c82..451544de 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -169,48 +169,86 @@ npm install abbrev -w ripple-keypairs npm uninstall abbrev -w xrpl ``` -## Release process +## Release process + checklist -### Release +## PR process -1. Ensure that all tests passed on the last CI that ran on `main`. +- [ ] Your changes should be on a branch. +- [ ] Your changes should have unit tests. +- [ ] Lint the code with `npm lint` +- [ ] Build your code with `npm build` +- [ ] Run the unit tests with `npm test` +- [ ] Get a full code review. +- [ ] Merge your branch into `main` and push to github. +- [ ] Ensure that all tests passed on the last CI that ran on `main`. -NOW WE ARE READY TO PUBLISH! No new code changes happen manually now. +## Release -2. Checkout `main` (or your beta branch) and `git pull`. -3. Create a new branch (`git checkout -b `) to capture updates that take place during this process. -4. Update `HISTORY.md` to reflect release changes. -5. Run `npm run docgen` if the docs were modified in this release to update them (skip this step for a beta). -6. Run `npm run build` to triple check the build still works -7. Run `npx lerna version --no-git-tag-version` - This creates a draft PR and bumps the versions of the packages. - * For each changed package, pick what the new version should be. Lerna will bump the versions, commit version bumps to `main`, and create a new git tag for each published package. - * If publishing a beta, make sure that the versions are all of the form `a.b.c-beta.d`, where `a`, `b`, and `c` are identical to the last normal release except for one, which has been incremented by 1. -8. Run `npm i` to update the package-lock with the updated versions -9. Create a new PR from this branch into `main` and merge it (you can directly merge into the beta branch for a beta). -10. Checkout `main` and `git pull` (you can skip this step for a beta since you already have the latest version of the beta branch). -11. Run `npx lerna publish from-package --yes` - This will actually publish the packages. - * NOTE: if you're releasing a beta, run `npx lerna publish from-package --dist-tag beta --yes` instead. - * If it asks for it, enter your [npmjs.com](https://npmjs.com) OTP (one-time password) to complete publication. -12. Create a new branch (`git checkout -b `)to capture the updated packages from the release. Merge those changes into `main`. (You can skip this step on a beta release). +1. Checkout `main` (or your beta branch) and `git pull`. +1. Create a new branch (`git checkout -b `) to capture updates that take place during this process. +1. Update `HISTORY.md` to reflect release changes. -NOW YOU HAVE PUBLISHED! But you're not done; we have to notify people! + - [ ] Update the version number and release date, and ensure it lists the changes since the previous release. -13. Pull the most recent changes to main locally. -14. Run `git tag -m `, where `` is the new package and version (e.g. `xrpl@2.1.1`), for each version released. -15. Run `git push --follow-tags`, to push the tags to Github. -16. On Github, click the "releases" link on the right-hand side of the page. -17. Click "Draft a new release" -18. Click "Choose a tag", and choose a tag that you just created. -19. Edit the name of the release to match the tag (IE \@\) and edit the description as you see fit. -20. Repeat steps 17-19 for each release. -21. Send an email to [xrpl-announce](https://groups.google.com/g/xrpl-announce). +1. Run `npm run docgen` if the docs were modified in this release to update them (skip this step for a beta). +1. Run `npm run build` to triple check the build still works +1. Run `npx lerna version --no-git-tag-version` - This creates a draft PR and bumps the versions of the packages. + + - For each changed package, pick what the new version should be. Lerna will bump the versions, commit version bumps to `main`, and create a new git tag for each published package. + - If publishing a beta, make sure that the versions are all of the form `a.b.c-beta.d`, where `a`, `b`, and `c` are identical to the last normal release except for one, which has been incremented by 1. + +1. Run `npm i` to update the package-lock with the updated versions. +1. Create a new PR from this branch into `main` and merge it (you can directly merge into the beta branch for a beta). +1. Checkout `main` and `git pull` (you can skip this step for a beta since you already have the latest version of the beta branch). +1. Actually publish the packages with one of the following: + + - Stable release: Run `npx lerna publish from-package --yes` + - Beta release: Run `npx lerna publish from-package --dist-tag beta --yes` + Notice this allows developers to install the package with `npm add xrpl@beta` + +1. If requested, enter your [npmjs.com](https://npmjs.com) OTP (one-time password) to complete publication. +1. If not a beta release: Create a new branch (`git checkout -b `) to capture the updated packages from the release. Merge those changes into `main`. + + NOW YOU HAVE PUBLISHED! But you're not done; we have to notify people! + +1. Pull the most recent changes to `main` locally. +1. Run `git tag -m `, where `` is the new package and version (e.g. `xrpl@2.1.1`), for each version released. +1. Run `git push --follow-tags`, to push the tags to Github. +1. On GitHub, click the "Releases" link on the right-hand side of the page. + +1. Repeat for each release: + + 1. Click "Draft a new release" + 1. Click "Choose a tag", and choose a tag that you just created. + 1. Edit the name of the release to match the tag (IE \@\) and edit the description as you see fit. + +1. Lastly, send an email to [xrpl-announce](https://groups.google.com/g/xrpl-announce). + +# ripple-lib 1.x releases + +- [ ] Publish the release to npm. + + - [ ] If you are publishing a 1.x release to the `xrpl` package, use: + + npm publish --tag ripple-lib + + This prevents the release from taking the `latest` tag. + +For ripple-lib: + + - Have one of the ripple-lib package maintainers push to `ripple-lib` (npm package name). You can contact [@intelliot](https://github.com/intelliot) to request the npm publish. +- For ripple-lib releases, cross-publish the package to `xrpl` with `--tag ripple-lib` + - [Here's why](https://blog.greenkeeper.io/one-simple-trick-for-javascript-package-maintainers-to-avoid-breaking-their-user-s-software-and-to-6edf06dc5617). + +- https://www.npmjs.com/package/ripple-lib +- https://www.npmjs.com/package/xrpl ## Mailing Lists We have a low-traffic mailing list for announcements of new `xrpl.js` releases. (About 1 email every couple of weeks) -+ [Subscribe to xrpl-announce](https://groups.google.com/g/xrpl-announce) +- [Subscribe to xrpl-announce](https://groups.google.com/g/xrpl-announce) If you're using the XRP Ledger in production, you should run a [rippled server](https://github.com/ripple/rippled) and subscribe to the ripple-server mailing list as well. -+ [Subscribe to ripple-server](https://groups.google.com/g/ripple-server) +- [Subscribe to ripple-server](https://groups.google.com/g/ripple-server)