Skip to content

Latest commit

 

History

History
49 lines (31 loc) · 2.6 KB

release-process.md

File metadata and controls

49 lines (31 loc) · 2.6 KB

Release Process

The following document covers the release process for the artifacts in this repository.

Reference Implementation

The following details the release process of the Sidetree reference implementation @decentralized-identity/sidetree, which is a typescript based npm package.

In general the release process can be summarized by the following flow

  • Each merged pull request into master results in the automated release of a new unstable package on npm, unless the [skip ci] tag is included in the commit message.
  • A release commit merged into master triggers a stable release of the reference implementation.

Stable Releases

To create a stable release follow the following steps

Note At present there is a manual step that must be performed prior to the following defined release process that includes reviewing latest since the previously released version in both ./lib/core/versions, ./lib/bitcoin/versions. If there are new chagnes, duplicate the latest folder with the new release version as the folder name.

  1. Checkout the head of master git checkout master && git pull
  2. Create a new release branch from master called release
  3. Install the dependencies npm install
  4. Build the package npm build
  5. Test the package npm test
  6. Run npm run version:release, with an appropriate option such as [ major | minor | patch ].
  7. Observe the correctly incremented change to the package.json and changes to CHANGELOG.md
  8. Push the release branch including the newly created tags git push origin release --tags
  9. Open a pull request for the release, once approvals have been sought, merge the pull request using rebase, preserving the commit message as release commit [skip ci]
  10. Observe the triggering of the /.github/workflows/push-release.yml github workflow

Note It is important that rebase is used as the strategy for merging a release pull request as this preserves the created release tag.

The resulting release will publish the new package to npm.

Unstable Releases

An unstable release is triggered on every commit to master, where the /.github/workflows/push-master.yaml is run.

The releases have the following version syntax <current package version + patch version>-unstable.<current git commit reference>

Note The /.github/workflows/push-master.yaml will skip if the commit message includes [skip ci]

Note To skip the automatic release of a new unstable version append [skip ci] to the end of the commit message that is merged into master.

Specification

TODO document