Skip to content
This repository has been archived by the owner on Oct 3, 2023. It is now read-only.

Add RELEASING.md. #153

Merged
merged 1 commit into from
Oct 18, 2018
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
64 changes: 64 additions & 0 deletions RELEASING.md
Original file line number Diff line number Diff line change
@@ -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`.