From 59e67c143b106fdd58ac1554cd3e181e26d781ba Mon Sep 17 00:00:00 2001 From: dd di cesare Date: Tue, 20 Feb 2024 16:46:34 +0100 Subject: [PATCH] [docs] Steps for releasing Authorino Operator --- RELEASE.md | 86 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 86 insertions(+) create mode 100644 RELEASE.md diff --git a/RELEASE.md b/RELEASE.md new file mode 100644 index 00000000..9825e6a0 --- /dev/null +++ b/RELEASE.md @@ -0,0 +1,86 @@ +# How to release Authorino Operator + +## Process + +To release a version “v0.W.Z” of Authorino Operator in GitHub and Quay.io, follow these steps: + +1. Pick a stable (released) version “v0.X.Y” of the operand known to be compatible with operator’s image for “v0.W.Z”; +if needed, [make a release of the operand first](https://github.com/Kuadrant/authorino/blob/main/RELEASE.md). + +2. Run the GHA [Release operator](https://github.com/Kuadrant/authorino-operator/actions/workflows/release.yaml); make +sure to fill all the fields: + + * Branch containing the release workflow file – default: `main` + * Commit SHA or branch name of the operator to release – usually: `main` + * Operator version to release (without prefix) – i.e. `0.W.Z` + * Authorino version the operator enables installations of (without prefix) – i.e. `0.X.Y` + * If the release is a prerelease + * Bundle and catalog channels (comma-separated) – usually: `stable` + +3. Run the GHA [Build and push images](https://github.com/Kuadrant/authorino-operator/actions/workflows/build-images.yaml) +for the “v0.W.Z” tag, specifying ‘Authorino version’ equals to “0.X.Y” (without the leading “v”). This will cause the +new images (bundle and catalog included) to be built and pushed to the corresponding repos in +[quay.io/kuadrant](https://quay.io/organization/kuadrant). + + +### Publishing the Operator in OpenShift Community Operators +Open a PR in the [OpenShift Community Operators repo](http://github.com/redhat-openshift-ecosystem/community-operators-prod) +([example](https://github.com/redhat-openshift-ecosystem/community-operators-prod/pull/1595) | +[docs](https://redhat-openshift-ecosystem.github.io/community-operators-prod/operator-release-process/)). + +The usual steps are: + +1. Start a new branch named `authorino-operator-v0.W.Z` + +2. Create a new directory _operators/authorino-operator/0.W.Z_ containing: + + * Copy the bundle files from _github.com/kuadrant/authorino-operator/tree/v0.W.Z/bundle_ + * Copy _github.com/kuadrant/authorino-operator/tree/v0.W.Z/bundle.Dockerfile_ with the proper fix to the COPY commands + (i.e. remove /bundle from the paths) + +### Publishing the Operator in Kubernetes Community Operators (OperatorHub.io) + +1. Open a PR in the [Kubernetes Community Operators repo](https://github.com/k8s-operatorhub/community-operators) +([example](https://github.com/k8s-operatorhub/community-operators/pull/1655) | [docs](https://operatorhub.io/contribute)). + +2. The usual steps are the same as for the +[OpenShift Community Operators](https://docs.google.com/document/d/1tLveyv8Zwe0wKyfUTWOlEnFeMB5aVGqIVDUjVYWax0U/edit#heading=h.b5tapxn4sbk5) +hub. + + +## Notes on Authorino Operator’s automated builds and references to the Authorino manifests and default version + +* PRs merged to the main branch of Authorino Operator cause a new image to be built (GH Action) and pushed automatically +to _quay.io/kuadrant/authorino-operator:_ – the _quay.io/kuadrant/authorino-operator:latest_ tag is also moved +to match the latest . + +* Authorino Operator owns the manifests required by the operator, i.e. Authorino CRD + role definitions, and hosts a copy +of the operand’s manifests (CRD+roles), merged together with the deploy and bundle manifests: + + * Stored in _config/deploy/manifests.yaml_ file that gathers resources of both operator (CRD, RBAC, Deployment, Service) + and operand (CRD, role definitions) + * Committing this file allows to install all the manifests and deploy an instance of the operator from a single + _kubectl apply_ command + * Tons of docs in the Authorino repo relying on that + * Make target manifests is used to generate the compiled version of all manifests (operator’s and operand’s). + It accepts as parameters: + + * _VERSION_: sets the version of the manifests of the operator generated by the operator-sdk command and image tag of + the deployment added to _config/deploy/manifests.yaml_ (default: latest) + * _AUTHORINO_VERSION_: sets the operand’s branch that sources the manifests (CRD, role definitions) that are appended + to _config/deploy/manifests.yaml_ (default: latest) + + * Changes in the operand’s CRD/role definitions out date the _config/deploy/manifests.yaml_ file, thus requiring a PR to + the operator repo ([example](https://github.com/Kuadrant/authorino-operator/pull/68)) + + * A make target _verify-manifests_ verifies consistency of the manifests + * Triggered in the CI tests + * Causes all PRs in the Operator repo to break whenever there’s a change in the operand’s API committed to the main + branch → requires immediate update of the copy of operand’s manifests in the main branch of the operator and rebase of all PRs + + * Apart from the operand’s manifests pinned to a specific or latest version in the copy committed to + _config/deploy/manifests.yaml_, the Operator’s code contains hard-coded references to the default version of the operand + to install: + * See _v1beta1.DefaultAuthorinoImage_ (_api/v1beta1/authorino_types.go_) + * It can be overwritten in the Authorino CR → good for dev/test/staging workflows + * Set to `latest` in the main branch