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 ¶
- Merge some work into
develop - Wait for GitHub Action
Release Projectionsto commit newlaraval-siteprojection toreleases/laravel-siteholobranch. - Wait for Github Action
Prepare Laravel Site Releaseto create/update a PR fromreleases/laravel-siteintodeploys/laravel-site - Ensure that you change the title of the generated PR to match the intended release number eg.(Release: vX.XXX.X).
- Edit the first comment in the generated PR by copying the contents from the
Changelogand manually organize them between Improvements and Technical. - Merge pull request
- Wait for Github Action
K8s Staging Build+Deployto run (triggered by previous step) which will create a new Docker build and ultimately update the version number for the staging release helm chart. - Wait for Github Action
Prepare k8s-manifests Deploy PRto create a PR fromreleases/k8s-manifests->deploys/k8s-manifests - Verify (by looking at the generated diff added to the PR description) and then merge PR.
- Wait for Github Action
Deploy K8s Manifeststo apply changes to kubernetes cluster. - 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. - Announce in
#indevets-teamSlack channel
Production deploy ¶
- Commit an update to the image version in
k8s/cats-production/release-values.yamlto the desired release. - Wait for Github Action
Release Projectionsto commit newk8s-manifestsprojection toreleases/k8s-manifestesholobranch. - Wait for Github Action
Prepare k8s-manifests Deploy PRto create a k8s deploy PR fromreleases/k8s-manifests->deploys/k8s-manifests. - Verify (by looking at the generated diff added to the PR description) and merge PR.
- Wait for Github Action
Deploy K8s Manifeststo apply changes to kubernetes cluster. - 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 - Announce in
#indevets-teamSlack 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 |