Skip to content

Automated Releases

The release process has been updated to be mostly automated via Github Action workflows. Human interaction is required for verifying and merging the generated release/deploy PRs in Github.

Staging deploy

  1. Merge some work into develop
  2. Wait for GitHub Action Release Projections to commit new laraval-site projection to releases/laravel-site holobranch.
  3. Wait for Github Action Prepare Laravel Site Release to create/update a PR from releases/laravel-site into deploys/laravel-site
  4. Ensure that you change the title of the generated PR to match the intended release number eg.(Release: vX.XXX.X).
  5. Edit the first comment in the generated PR by copying the contents from the Changelog and manually organize them between Improvements and Technical.
  6. Merge pull request
  7. Wait for Github Action K8s Staging Build+Deploy to run (triggered by previous step) which will create a new Docker build and ultimately update the version number for the staging release helm chart.
  8. Wait for Github Action Prepare k8s-manifests Deploy PR to create a PR from releases/k8s-manifests -> deploys/k8s-manifests
  9. Verify (by looking at the generated diff added to the PR description) and then merge PR.
  10. Wait for Github Action Deploy K8s Manifests to apply changes to kubernetes cluster.
  11. Verify that https://staging.k8s.indevets.com/ loads, that you can login as an admin, and that you see the new version number under the toolbar.
  12. Announce in #indevets-team Slack channel

Production deploy

  1. Commit an update to the image version in k8s/cats-production/release-values.yaml to the desired release.
  2. Wait for Github Action Release Projections to commit new k8s-manifests projection to releases/k8s-manifestes holobranch.
  3. Wait for Github Action Prepare k8s-manifests Deploy PR to create a k8s deploy PR from releases/k8s-manifests -> deploys/k8s-manifests.
  4. Verify (by looking at the generated diff added to the PR description) and merge PR.
  5. Wait for Github Action Deploy K8s Manifests to apply changes to kubernetes cluster.
  6. Verify that https://schedule.indevets.com/ loads, that you can login as an admin, and that you see the new version number under the toolbar
  7. Announce in #indevets-team Slack channel

Workflow Descriptions:

Name Description Triggered by
Release Projections Generate Hologit projections and update their respective holobranches: laravel-site -> releases/laravel-site, k8s-manifests -> releases/k8s-manifests Pushes on develop
Prepare Laravel Site Release Create/Update pull request from projected holobranch releases/laravel-site -> deploys/laravel-site. Pushes on releases/laravel-site
K8s Staging Build+Deploy (todo: rename) Create a new Docker build, tagged with the version pulled from the title of the merged PR that triggers this action. It will then update the helm chart values for the staging release, located in k8s/cats-staging/release-values.yaml to the respective version and commit it directly to the develop branch which will trigger a new k8s-manifests Release Projection. Finally, this action will create a new release with the version and release notes pulled from the title and body respectively. PR Merged into deploys/laravel-site
Deploy K8s Manifests Apply K8s manifests from the deploys/k8s-manifests holobranch to the configured kubernetes cluster. Push on deploys/k8s-manifests
Prepare k8s-manifests Deploy PR Generate diff of current k8s config with projected k8s config and add that to the description of the PR that gets created from releases/k8s-manifests -> deploys/k8s-manifests