-
Notifications
You must be signed in to change notification settings - Fork 136
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add release automation setup. #711
Conversation
This leverages a few external packages to make publishing nice and simple: * [release-it](https://github.com/release-it/release-it) - Responsible for handling the main release process. * [release-it-lerna-changelog](https://github.com/rwjblue/release-it-lerna-changelog) Responsible for building up a nice changelog (based on PRs merged, their labels and PR titles), then launching $EDITOR to allow hand tweaking of that changelog. * [release-it-yarn-workspaces](https://github.com/rwjblue/release-it-yarn-workspaces) Responsible for looping through packages, updating the versions (and dependency versions), and calling `npm publish` on each. The `RELEASE.md` file here should describe the process in detail, but the highlevel process is: * As you review and merge PRs, label them and update their titles to be something that is "changelog ready" * When you are ready to release, run `npx release-it` * Follow prompts * Review changelog, and tweak as needed Once the `release-it` process completes, the following will have been done: * All `version` fields will be updated to the new version * All related dependencies/devDependencies/peerDependencies will have their versions updated (to match the newly selected version) * A CHANGELOG.md entry will have been created * All packages/* will be published to npm * A new GitHub Release will be published * The branch and tag will be pushed
"release-it-yarn-workspaces": { | ||
"workspaces": [ | ||
"packages/*" | ||
], | ||
"additionalManifests": { | ||
"dependencyUpdates": [ | ||
"test-packages/*/package.json" | ||
] | ||
} | ||
} | ||
}, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This configuration is the only real difference from npx create-rwjblue-release-it-setup
. It is specifically needed because we don't "just" want to use the workspaces
array directly (since we don't want to publish test-packages/*
).
For context, right now the generated CHAGNELOG.md entry for the changes queued up on Unreleased (2021-03-04)🚀 Enhancement
🐛 Bug Fix
🏠 Internal
Committers: 5
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks, looks great.
I tried running this for the first time, and it died at the point where it started trying to publish the npm packages.
Is there something weird about my environment? (I finished the release by publishing the packages manually, everything else looks like it happened successfully.) |
This leverages a few external packages to make publishing nice and simple:
npm publish
on each.The
RELEASE.md
file here should describe the process in detail, but the highlevel process is:npx release-it
Once the
release-it
process completes, the following will have been done:version
fields will be updated to the new versiontheir versions updated (to match the newly selected version)
🎉
Fixes #585