-
Notifications
You must be signed in to change notification settings - Fork 3.5k
Description
Target Version: v8.15.1
Target Date: 2022-07-27
Created From: Release-Process-(v8).md###Publishing the `cli`
-
0. Create
release-manager
issueFollow the rest of the checklist in the created issue.
node scripts/release-manager.js
-
1. Checkout the latest branch and reset deps
git checkout latest && git pull node . run resetdeps
-
2. Pull in PRs
-
Search for PRs to merge. Some helpful
gh
searches:gh pr list --draft=false --search "status:pending" gh pr list --draft=false --search "status:success" gh pr list --draft=false --search "review:required" gh pr list --draft=false --search "review:approved"
-
Make sure the PR is targeting
latest
and not something else. -
Make a judgment call to either squash or rebase the PR. Prefer using squash unless PR has multiple conventional commits.
-
Squash
gh pr merge -s <pr-num> && git pull
-
Rebase
gh pr merge -m <pr-num> && git pull
-
-
3. ❓ Optional: Update Deps
Steps
⚠️ This is an optional step, the way we are handling the dependencies now is to open then via Pull Requests so ideally any dependencies update that needs to go out in a release should have been merged already at this point. Refer to these steps in case there are important last-minute dependencies updates that needs to go out along with the current release.-
Check all deps
node . outdated
-
Check production deps
node . outdated -a --omit=dev
-
Install and commit each dep to a PR
git checkout -b deps/updates node . install <pkg>@<version> node ./scripts/bundle-and-gitignore-deps.js git add -A && git commit -m 'deps: <pkg>@<version>' git push origin deps/updates gh pr create -f
-
Rebase-merge the PR if things look ok
-
Updating template-oss
node . i @npmcli/template-oss@latest -ws --include-workspace-root --save-exact
-
-
4. Make sure tests/lint pass
node . run test-all node . run lint-all
-
5. Generate Changelog
-
Push commits needed to generate the changelog
git push origin latest
-
Write release notes to
CHANGELOG.md
node ./scripts/changelog.js -w --format=short
-
Open
CHANGELOG.md
and check it for any unexpected/malformed entries. -
Commit
CHANGELOG.md
updatesgit add CHANGELOG.md && git commit -m 'chore: changelog for v8.15.1'
-
-
6. Update Version
node . version 8.15.1
-
7. Push to GitHub
-
Create a release branch in the remote repo
git push origin latest:release/v8.15.1
-
Create a PR with the body set to the manually formatted release notes from
CHANGELOG.md
node ./scripts/changelog.js -r --type=gh | gh pr create -H release/v8.15.1 -t "Release/v8.15.1" -F -
-
Ensure PR CI checks pass
gh pr checks release/v8.15.1 --watch
-
-
8. Publish Package
make publish
-
9. Update Dist Tag
-
❓ Optional: install via version to see how it runs locally before tagging
npm i -g [email protected]
-
Set version to
latest
dist tagnode . dist-tag add [email protected] latest
-
-
10. Create a GitHub release
-
Create a GitHub release with the notes set to the body of the PR
gh pr view release/v8.15.1 --json body --jq .body | gh release create v8.15.1 --title "v8.15.1" -F -
-
-
11. ⏳ Temporary: Merge the release branch into
release-next
git checkout release-next git fetch && git pull git merge --ff-only latest git push origin release-next git checkout latest
-
12. Post on Twitter
New @npmjs release! <link-to-github-release> <details-about-release> latest: 8.15.1
-
13. Update Node.js
-
Sync our
npm/node
fork with thenodejs/node
upstreamgh repo sync npm/node --source nodejs/node --force
-
Trigger the Create CLI Deps PR action (use the default input of
latest
)gh workflow run create-cli-deps-pr.yml
-