The strategy for versioning and deployment/publishing within this project is complicated by the fact that there are two distinct
types of artifacts produced. That is, packages/desktop
produces platform-specific executables for linux, macOS, and Windows,
while packages/web
produces a static website intended to be dumped into an S3 website bucket (or otherwise sit
behind a web server).
- Make sure all your changes are committed and merged into
main
. - Navigate to the GH workflow actions and select "Run workflow" along with the branch
main
&staging
. - Review deploy action & approve if it looks good.
- Test out changes on staging.
- Navigate to the GH workflow actions and select "Run workflow" along with the branch
main
&production
. - Review deploy action & approve if it looks good.
- Test out changes on production
The following captures the steps of a release of this project to desktop:
- Make sure all your changes are committed and merged into main.
- Make sure branch is clean:
git checkout main git stash git pull
- Determine version bump type, choose one of
patch
,minor
, ormajor
, depending on the scale of the changes including in this version bump. This will create a version likev<version>
. See below for a guideline to which version to increment to.# You need to choose one of 'patch', 'minor', or 'major' export VERSION_BUMP_TYPE=<one of patch, minor, or major>
- Create tag and push new version to GitHub like so:
npm --no-commit-hooks version --workspace packages/desktop $VERSION_BUMP_TYPE -m "v%s"
- Wait for a GitHub Action to automatically create new platform-specific
builds of
packages/desktop
, prepare a draft Github release, and upload the builds as release artifacts to that release. - Update the GitHub release once the Github action in Step 4 is finished, manually edit the Github release which was drafted as part of Step 4. Format its release name with the date (consistent with other release names), add a description of the changes, and optionally mark whether the release is "pre-release." If it is marked as "pre-release," it will not be accessible for download through the Github pages site.