Skip to content

Release Process

Jeremy Asuncion edited this page Jul 16, 2024 · 3 revisions

We currently have two environments that have automated deployments: staging and production. Staging deployments happen for every PR and production deployments happen every day. This page is a quick overview of how our release process works. For more info, take a look at the CryoET Data Portal Release Process document.

Staging

https://frontend.cryoet.staging.si.czi.technology

Deployments to staging happen for every PR that is merged into main. This is beneficial because it allows us to test new features in a production-like environment before it hits production. The staging deployment workflow is defined in staging-deploy.yml.After staging has been deployed, our E2E test suite is run to verify that everything is still working correctly.

Release PR

Every PR merged into main also kicks off the release notes workflow. This job uses release-please to automatically create a release PR that does several things:

  1. Bumps the version in frontend/package.json
  2. Bumps the version in release-please.manifest.json
  3. Updates the frontend/CHANGELOG.md file

The changelog is created using the PR titles for every merged PR after the last release. We use conventional commits for categorizing each PR:

image

At the moment, release PRs require manual approvals before the workflow runs in order for the release to go through. This is a limitation in GitHub actions because it's not capable of approving PRs, so we would eventually need to create a GitHub bot that has permission to approve PRs for our repo.

We currently support the following conventional commit prefixes:

Type Description
Feat ✨ Features
Fix 🐞 Bug Fixes
Perf ⚡️ Performance Improvements
Revert ↩️ Reverts
Docs 📝 Documentation
Style 💅 Styles
Chore 🧹 Miscellaneous Chores
Refactor ♻️ Code Refactoring
Test 🧪 Tests
Build 🛠️ Build System
Ci ⚙ Continuous Integration

Production

https://cryoetdataportal.czscience.com

Deployments to production happen daily at 10am / 11am PST depending on daylight savings. Prior to a deployment, make sure that release PR is approved before the deployment workflow starts. For production deployments, there are several components that make up the entire process defined in prod-deploy.yml:

  1. Run staging E2E tests
  2. Merge release PR
  3. Push release tag in format web-v{version}
  4. Update release PR label to autorelease: tagged
  5. Deploys to production
  6. Run prod E2E tests
  7. Notify #team-sci-imaging-data-portal on slack if deployment succeeded or failed

Manual deployments

Manual deployments to production can be accomplished by using Run workflow button on the workflow page:

https://github.com/chanzuckerberg/cryoet-data-portal/actions/workflows/prod-deploy.yml

image
Clone this wiki locally