-
Notifications
You must be signed in to change notification settings - Fork 5
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.
- 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")
- 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.
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:
- Push tag
v1.0.0-e-alpha
. - Wait for Google's approval of the extension in staging.
- Push tag
v1.0.0-alpha
so that the versions of the wallet and governance match the newly available staging extension. - Do all the necessary testing and bugfixing on staging.
- Push tag
v1.0.0-e
. - Wait for Google's approval of the extension in production.
- Push tag
v1.0.0
so that the versions of the wallet and governance match the newly available production extension.
- Change to the
milestone
branch that you want to release. - Update the CHANGELOG.md to ensure all changes are included in a block titled with the new version number.
- Run
yarn install
to ensures Lerna is installed and up-to-date - 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. - 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
.