We’re releasing based on tags, which contain our version number. The format is ‘v0.0.0’. The release title will be set to this version.
The CI pipeline has a ‘release’ job, which will update the release on Github. That job triggers itself, when a draft release is created.
Create new release pipeline
We release from release-branches. Each maintained release has a separate pipeline in Concourse. To create a new pipeline run this in the CI repository:
CFO is your concourse target and
v0.4.x is the name of the branch.
The last argument,
v0.4 is used to filter Github tags, which belong to the release.
This allows a separate Github branch and Concourse pipeline for each major version. Within those pipelines, releases can be built from minor versions.
Create a new release
After completion, the pipeline will create several artifacts:
- helm chart on S3
- helm chart in our repo at https://cloudfoundry-incubator.github.io/quarks-helm/
- cf-operator binary on S3
- docker image of the operator on dockerhub
Running the ‘release’ job will take the latest artificats, which passed through the pipeline and add them to the Github release:
- to the body
- as Github assets for downloading
The version numbers (
v0.0.0-<number-of-commits>.<commit-SHA>) of these assets are taken from the info on S3.
They have to match the Github tag, else the release job will fail.
The assets will be copied into a ‘release’ folder on S3.
The docker image is only referenced from the helm chart and not mentioned in the release, though.
- Create version branch
- Create a new release pipeline for that branch
- Unpause pipeline
- Continue with “Minor Bump”
- Tag commit with new version
- Push commit
- Wait for commit to pass release pipeline, ‘publish’ needs to create the binary and helm chart, before the ‘release’ job can run
- Create a draft Github release for that tag, ‘release’ job triggers
- Wait for ‘release’ job to finish on Concourse
- Edit the draft release on Github and publish it
Try not to push to the pipeline again, until step 4 is completed. The ‘release’ job will always take the most recent artifacts from S3. Maybe pause the ‘publish’ job manually to avoid accidental updates.
Documentation for releases is kept in branches of the quarks-doc repo. Release docs are pushed to Cloudfoundry via Github Actions, as defined in the branch.
On the release branch:
- Use a unique app name in
.github/workflows/pagesbranch to match the release branch.
Be sure to adapt menus in all branches (
config.toml) to match the new app URL.