Skip to content

Release process

Adi Dahiya edited this page Dec 6, 2017 · 43 revisions

Prepare the release commit

  1. Ensure all relevant PRs have merged to master.

  2. Create release branch based off latest master. Use SemVer to come up with the next version number: [major].[minor].[patch] (all three numbers are required).

    git checkout master
    git pull
    git checkout -b release/[version number]
    
  3. Compile the monorepo with yarn compile-libs.

  4. Compile the publishable distributions with yarn dist.

  5. Update the root package.json version (match core's version, or bump a patch version if core wasn't changed).

  6. Review and commit the changes.

    git commit -a -m "Prepare release v[version number]"
    

Review the release PR

  1. Create a PR on GitHub. Write the release notes in the description.
  2. This PR must change the contents of the docs/ folder, or it will fail. This folder should contain the latest documentation site which will be available at http://blueprintjs.com/docs.
  3. Perform regression pass on the release artifacts.
  4. Merge the release PR!
  5. At this point, the site has been updated since it uses the contents of the docs/ folder.

Writing release notes

See other releases for example format. We typically describe changes using the following groups:

  1. 🔥 BREAKING
  2. NEW
  3. Fixed
  4. Changed
  5. Deprecated

A 🌟 is used to indicate release highlights: features or fixes of particular note.

A useful way to determine exactly what happened in a release is to diff the commits with the previous version or use the relevant milestone.

Publish to NPM

  1. Run lerna publish --skip-npm --scope '@blueprintjs/{core,datetime,labs,table}' (or some appropriate subset of the packages).
  2. Interactively pick version numbers.
  3. Review the commit which Lerna just produced.
  • Manually audit the dependencies between packages. This is an important step as not all packages need to depend on the latest version of the core package.
  • ⚠️ Lerna updates transitive package dependencies, so you'll need to revert those changes (unless datetime does actually require the latest version of core, for instance).
  1. Push to master with tags: git push origin master --follow-tags.
  2. Attach release notes to the new tags which were produced in the Github UI.
Clone this wiki locally