From b171208ac7d1c8845a6f531ac62369067bc98f5e Mon Sep 17 00:00:00 2001 From: Yang Song Date: Thu, 18 Oct 2018 12:19:41 -0700 Subject: [PATCH] Add RELEASING.md. (#153) --- RELEASING.md | 64 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 RELEASING.md diff --git a/RELEASING.md b/RELEASING.md new file mode 100644 index 000000000..510f7158f --- /dev/null +++ b/RELEASING.md @@ -0,0 +1,64 @@ +# Releasing OpenCensus Node Packages (for Maintainers Only) + +This document explains how to publish all OC Node modules at version x.y.z. Ensure that you’re following semver when choosing a version number. + +## Update to latest locally + +Use `git fetch` and `git checkout origin/master` to ensure you’re on the latest commit. Make sure +you have no unstaged changes. Ideally, also use `git clean -dfx` to remove all ignored and +untracked files. + +## Create a new branch + +Create a new branch called `x.y.z-proposal` from the current commit. + +## Use Lerna to prepare each package for release + +Use `npm install` and `lerna bootstrap` to initialize all package directories. +Also, use `lerna publish --skip-npm --skip-git` to bump version numbers. +Ensure that the version being bumped to is `x.y.z`. This should create some unstaged changes. + +## Create a new commit + +Create a new commit with the exact title: `chore(multiple): x.y.z release proposal`. + +## Use the Changelog to create a GitHub Release + +On [GitHub Releases](https://github.com/census-instrumentation/opencensus-node/releases), +follow the example set by recent releases to populate a summary of changes, as well as a list of +commits that were applied since the last release. `git log --oneline --no-decorate` is a good way +to get that list of commits. Save it as a draft, don’t publish it. Don’t forget the tag -- call +it `vx.y.z` and leave it pointing at `master` for now (this can be changed as long as the GitHub +release isn’t published). + +## Create a new PR + +Push the branch to GitHub and create a new PR with that exact name. The commit body should just +be a link to the *draft* notes. Someone who can access draft notes should approve it, looking +in particular for test passing, and whether the draft notes are satisfactory. + +## Merge and pull + +Merge the PR, and pull the changes locally (using the commands in the first step). Ensure that +`chore(multiple): x.y.z release proposal` is the most recent commit. + +## Publish all packages + +Go into each directory and use `npm publish` to publish the package. You can use the following +script to automate this. + +```bash +#!/bin/bash + +for dir in $(ls packages); do + pushd packages/$dir + npm publish + popd +done +``` + +Check your e-mail and make sure the number of “you’ve published this module” emails matches the number you expect. + +## Publish the GitHub Release + +Publish the GitHub release, ensuring that the tag points to the newly landed commit corresponding to release proposal `x.y.z`.