Skip to content

Releasing

Albert Andrejev edited this page Apr 7, 2020 · 10 revisions

The applications are built and deployed using from Travis for every tag build.

All 6 application (Extension, Wallet, Governance in both staging and production config) are released together in one step. Separate releases of some applications or configurations could potentially be realized with a more advanced CI setup.

Prerequisites

  1. The person triggering the release needs direct push access to the master branch (See Github branch potention settings at https://github.com/iov-one/ponferrada/settings/branch_protection_rules/4371646, block "Restrict who can push to matching branches")
  2. All the PRs that constitute the feature that needs to be released are to be merged into a milestone branch, which are branches with the name milestone/<feature-name>. This milestone branch should integrate the PRs from the tickets that are assigned to the corresponding GitHub milestone.

Choosing a version number

The tags should make use of the following format:

v<version_number>[-apps_to_deploy][-alpha] Where <> is mandatory and where [] is optional.

The apps_to_deploy part can be any combination of the following letters:

  • e: deploy extension
  • w: deploy wallet
  • g: deploy governance

When no letter is present, every app is deployed except the extension.

The alpha part indicates that it should not be pushed to production if present.

Tag examples:

  • v1.0.0-w: deploys the wallet app to staging and production
  • v1.0.0-ge-alpha: deploys the governance app and the extension to staging
  • v1.0.0-alpha: deploys the wallet and governance apps to staging

Our most common flow is this:

  1. Push tag v1.0.0-e-alpha.
  2. Wait for Google's approval of the extension in staging.
  3. Push tag v1.0.0-alpha so that the versions of the wallet and governance match the newly available staging extension.
  4. Do all the necessary testing and bugfixing on staging.
  5. Push tag v1.0.0-e.
  6. Wait for Google's approval of the extension in production.
  7. Push tag v1.0.0 so that the versions of the wallet and governance match the newly available production extension.

Performing a release

  1. Change to the milestone branch that you want to release.
  2. Update the CHANGELOG.md to ensure all changes are included in a block titled with the new version number.
  3. Run yarn install to ensures Lerna is installed and up-to-date
  4. Run yarn lerna version. This lets you select the new version that you have chosen before and updates projects. This automatically pushes commits and tags.
  5. If there are no changes in the packages, which will happen for example when a 2-step release is performed (release extension, and then release rest of the apps without changing any code), Lerna won't allow the change of versions and therefore its publication. For circumventing that check of changes the command needs to be yarn lerna version --force-publish.