Releasing Lagoon#
Lagoon has a number of moving parts, making releases quite complicated!
Lagoon-core - tags and testing#
- Ensure all the identified pull requests have been merged into main branch for:
- uselagoon/lagoon
- uselagoon/build-deploy-tool
- uselagoon/lagoon-ui
- Once you are confident, push the next tag in sequence (minor or patch) to the main branch in the format v2.MINOR.PATCH as per semver. This will trigger a Jenkins build, visible at https://ci.lagoon.sh/blue/organizations/jenkins/lagoon/branches
- Whilst this is building, push lightweight tags to the correct commits on
lagoon-ui
andbuild-deploy-tool
in the format core-v2.MINOR.PATCH. Note that there are no other tags or releases on build-deploy-tool, but lagoon-ui also has it's own semver releases that are based on it's features. - Once the build has completed successfully in Jenkins, head to https://github.com/uselagoon/lagoon-charts to prepare the charts release
- In the chart.yaml for the
lagoon-core
andlagoon-test
charts, update the following fields: - version: This is the next "minor" release of the chart - we usually use minor for a corresponding lagoon-core release
- appVersion: This is the actual tag of the released lagoon-core
- artifacthub.io/changes: All that's needed are the two lines in the below snippet, modified for the actual appVersion being released.
sample chart.yml snippets
Only lagoon-core and lagoon-test charts are updated as a result of a lagoon-core release. Follow the lagoon-remote process if there are any other changes.
# This is the chart version. This version number should be incremented each
# time you make changes to the chart and its templates, including the app
# version.
# Versions are expected to follow Semantic Versioning (https://semver.org/)
version: 1.28.0
# This is the version number of the application being deployed. This version
# number should be incremented each time you make changes to the application.
# Versions are not expected to follow Semantic Versioning. They should reflect
# the version the application is using.
appVersion: v2.14.2
# This section is used to collect a changelog for artifacthub.io
# It should be started afresh for each release
# Valid supported kinds are added, changed, deprecated, removed, fixed and security
annotations:
artifacthub.io/changes: |
- kind: changed
description: update Lagoon appVersion to v2.14.2
- Create a PR for this chart release, and the Github Actions suite will undertake a full suite of tests:
- Lint and test charts - matrix: performs a lint and chart install against the current tested version of Kubernetes
- Lint and test charts - current: performs a lint and chart install against previous/future versions of Kubernetes
- Lagoon tests: runs the full series of ansible tests against the release.
Usually, failures in the lint and test charts are well explained (missing/misconfigured chart settings). If a single Lagoon test failes, it may just need re-running. If multiple failures occur, they will need investigating.
Once those tests have all passed successfully, you can proceed with creating the releases:
Lagoon-core - releases and release notes#
- In uselagoon/lagoon create a release from the tag pushed earlier. Use the "Generate release notes" button to create the changelog. Look at previous releases for what we include in the release - and the lagoon-images link will always be the most recent released version. Note that the links to the charts, lagoon-ui and build-deploy-tool can all be filled in now, but the links won't work until the future steps. Mark this as the latest release and Publish the release.
- In uselagoon/build-deploy-tool create a release from the tag pushed earlier. Use the "Generate release notes" button to create the changelog - ensuring that the last core-v2.X tag is used, not any other tag. Look at previous releases for what we include in the release - Mark this as the latest release and Publish the release.
- In uselagoon/lagoon-ui create a release from the tag pushed earlier. Use the "Generate release notes" button to create the changelog - ensuring that the last core-v2.X tag is used, not any other tag. Look at previous releases for what we include in the release - Mark this as the latest release and Publish the release.
- In uselagoon/lagoon-charts merge the successful PR, this will create the lagoon-core and lagoon-test releases for you. Edit the resulting lagoon-core chart release to note the corresponding lagoon release in the title and text box, as per previous releases.
Lagoon-remote - releases and release notes#
Lagoon remote has a release cycle separate to Lagoon Core, and as such, can be released anytime that a dependency sub-chart or service is updated.