From cd324d9e3aeaf00f4e831790a8e1432e918ba344 Mon Sep 17 00:00:00 2001 From: Valery Mogilevsky Date: Wed, 30 Oct 2024 07:58:42 +0200 Subject: [PATCH] THREESCALE-11055 Community Release v0.9.0 --- Makefile | 12 +- bundle.Dockerfile | 3 +- ...picast-operator.clusterserviceversion.yaml | 19 +- bundle/metadata/annotations.yaml | 3 +- config/manager/kustomization.yaml | 2 +- config/manager/manager.yaml | 2 +- ...picast-operator.clusterserviceversion.yaml | 11 +- doc/community-release-build.md | 253 ++++++++++++++++++ 8 files changed, 279 insertions(+), 26 deletions(-) create mode 100644 doc/community-release-build.md diff --git a/Makefile b/Makefile index 6a50e17f..000761df 100644 --- a/Makefile +++ b/Makefile @@ -9,20 +9,16 @@ PROJECT_PATH := $(patsubst %/,%,$(dir $(MKFILE_PATH))) all: manager # Current Operator version -VERSION ?= 0.0.1 +VERSION ?= 0.9.0 # Default bundle image tag BUNDLE_IMG ?= controller-bundle:$(VERSION) # Options for 'bundle-build' -ifneq ($(origin CHANNELS), undefined) -BUNDLE_CHANNELS := --channels=$(CHANNELS) -endif -ifneq ($(origin DEFAULT_CHANNEL), undefined) -BUNDLE_DEFAULT_CHANNEL := --default-channel=$(DEFAULT_CHANNEL) -endif +BUNDLE_CHANNELS := --channels="alpha,stable" +BUNDLE_DEFAULT_CHANNEL := --default-channel=stable BUNDLE_METADATA_OPTS ?= $(BUNDLE_CHANNELS) $(BUNDLE_DEFAULT_CHANNEL) # Image URL to use all building/pushing image targets -IMG ?= quay.io/3scale/apicast-operator:master +IMG ?= quay.io/3scale/apicast-operator:v0.9.0 CRD_OPTIONS ?= "crd:crdVersions=v1" diff --git a/bundle.Dockerfile b/bundle.Dockerfile index a6d08f97..0d753c07 100644 --- a/bundle.Dockerfile +++ b/bundle.Dockerfile @@ -4,7 +4,8 @@ LABEL operators.operatorframework.io.bundle.mediatype.v1=registry+v1 LABEL operators.operatorframework.io.bundle.manifests.v1=manifests/ LABEL operators.operatorframework.io.bundle.metadata.v1=metadata/ LABEL operators.operatorframework.io.bundle.package.v1=apicast-operator -LABEL operators.operatorframework.io.bundle.channels.v1=alpha +LABEL operators.operatorframework.io.bundle.channels.v1=alpha,stable +LABEL operators.operatorframework.io.bundle.channel.default.v1=stable LABEL operators.operatorframework.io.metrics.builder=operator-sdk-v1.2.0 LABEL operators.operatorframework.io.metrics.mediatype.v1=metrics+v1 LABEL operators.operatorframework.io.metrics.project_layout=go.kubebuilder.io/v2 diff --git a/bundle/manifests/apicast-operator.clusterserviceversion.yaml b/bundle/manifests/apicast-operator.clusterserviceversion.yaml index e65f6a73..32fa152c 100644 --- a/bundle/manifests/apicast-operator.clusterserviceversion.yaml +++ b/bundle/manifests/apicast-operator.clusterserviceversion.yaml @@ -20,7 +20,7 @@ metadata: capabilities: Full Lifecycle categories: Integration & Delivery certified: "false" - containerImage: quay.io/3scale/apicast-operator:master + containerImage: quay.io/3scale/apicast-operator:v0.9.0 createdAt: "2019-10-27T22:40:00Z" description: APIcast is an API gateway built on top of NGINX. It is part of the Red Hat 3scale API Management Platform olm.properties: '[{"type": "olm.maxOpenShiftVersion", "value": "4.17"}]' @@ -33,7 +33,7 @@ metadata: operatorframework.io/arch.amd64: supported operatorframework.io/arch.ppc64le: supported operatorframework.io/arch.s390x: supported - name: apicast-operator.v0.0.1 + name: apicast-operator.v0.9.0 namespace: placeholder spec: apiservicedefinitions: {} @@ -56,10 +56,10 @@ spec: ### Upgrading your installation The APIcast Operator understands how to run and upgrade between a set of APIcast versions. - See [the upgrade guide](https://github.com/3scale/apicast-operator) for more information. + See [the upgrade guide](https://github.com/3scale/apicast-operator/blob/v0.9.0/doc/operator-user-guide.md#upgrading-APIcast) for more information. ### Documentation - Documentation can be found on our [website](https://github.com/3scale/apicast-operator). + Documentation can be found on our [website](https://github.com/3scale/apicast-operator/tree/v0.9.0). ### Getting help If you encounter any issues while using operator, you can create an issue on our [website](https://github.com/3scale/apicast-operator) for bugs, enhancements, or other requests. @@ -76,7 +76,7 @@ spec: ### License APIcast Operator is licensed under the [Apache 2.0 license](https://github.com/3scale/apicast-operator/blob/master/LICENSE) - displayName: APIcast (development latest) + displayName: APIcast icon: - base64data: PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMTAwcHgiIGhlaWdodD0iNTBweCIgdmlld0JveD0iMCAwIDEwMCA1MCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KICAgIDwhLS0gR2VuZXJhdG9yOiBTa2V0Y2ggNTQuMSAoNzY0OTApIC0gaHR0cHM6Ly9za2V0Y2hhcHAuY29tIC0tPgogICAgPHRpdGxlPkdyb3VwIDI8L3RpdGxlPgogICAgPGRlc2M+Q3JlYXRlZCB3aXRoIFNrZXRjaC48L2Rlc2M+CiAgICA8ZyBpZD0iUGFnZS0xIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj4KICAgICAgICA8ZyBpZD0iR3JvdXAtMiI+CiAgICAgICAgICAgIDxyZWN0IGlkPSJSZWN0YW5nbGUiIGZpbGw9IiNGRkZGRkYiIHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAiIGhlaWdodD0iNTAiPjwvcmVjdD4KICAgICAgICAgICAgPGcgaWQ9Ikdyb3VwIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxOS45NDY4MDksIDAuMDAwMDAwKSIgZmlsbD0iI0ZGNzMxNCIgZmlsbC1ydWxlPSJub256ZXJvIj4KICAgICAgICAgICAgICAgIDxnIGlkPSJsb2dvLW1hcmsiPgogICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0wLDkuMDUyNjMxNjEgQzAsNCA0LjIyMzY5MTg1LDAgOS4zMTM3ODE4MywwIEMxNC41MTIxNzE1LDAgMTguNjI3NTYzOCw0LjEwNTI2MzA2IDE4LjYyNzU2MzgsOS4wNTI2MzE2MSBDMTguNjI3NTYzOCwxNC4xMDUyNjMxIDE0LjQwMzg3MiwxOC4xMDUyNjMxIDkuMzEzNzgxODMsMTguMTA1MjYzMSBDNC4yMjM2OTE4NSwxOC4xMDUyNjMxIDAsMTQuMTA1MjYzMSAwLDkuMDUyNjMxNjEgTTQ4LjYyNjYwNTQsMTEuODk0NzM2OSBDNDguNjI2NjA1NCw4Ljg0MjEwNTMyIDUxLjIyNTgwMDEsNi4zMTU3ODkzNSA1NC4zNjY0OTQyLDYuMzE1Nzg5MzUgQzU3LjUwNzE4OCw2LjMxNTc4OTM1IDYwLjEwNjM4Myw4Ljg0MjEwNTMyIDYwLjEwNjM4MywxMS44OTQ3MzY5IEM2MC4xMDYzODMsMTQuOTQ3MzY4NCA1Ny41MDcxODgsMTcuNDczNjg0NCA1NC4zNjY0OTQyLDE3LjQ3MzY4NDQgQzUxLjExNzUwMDQsMTcuNDczNjg0NCA0OC42MjY2MDU0LDE1LjA1MjYzMTYgNDguNjI2NjA1NCwxMS44OTQ3MzY5IE0zMi45MjMxMzYsMzguMTA1MjYzMSBDMzIuOTIzMTM2LDMxLjU3ODk0NzMgMzguNDQ2NDI1MiwyNi4yMTA1MjYzIDQ1LjE2MTAxMiwyNi4yMTA1MjYzIEM1MS44NzU1OTg5LDI2LjIxMDUyNjMgNTcuMzk4ODg4MiwzMS41Nzg5NDczIDU3LjM5ODg4ODIsMzguMTA1MjYzMSBDNTcuMzk4ODg4Miw0NC42MzE1NzkgNTEuODc1NTk4OSw1MCA0NS4xNjEwMTIsNTAgQzM4LjQ0NjQyNTIsNTAgMzIuOTIzMTM2LDQ0LjczNjg0MTkgMzIuOTIzMTM2LDM4LjEwNTI2MzEiIGlkPSJTaGFwZSI+PC9wYXRoPgogICAgICAgICAgICAgICAgPC9nPgogICAgICAgICAgICA8L2c+CiAgICAgICAgPC9nPgogICAgPC9nPgo8L3N2Zz4= mediatype: image/svg+xml @@ -116,8 +116,8 @@ spec: fieldRef: fieldPath: metadata.annotations['olm.targetNamespaces'] - name: RELATED_IMAGE_APICAST - value: quay.io/3scale/apicast:latest - image: quay.io/3scale/apicast-operator:master + value: quay.io/3scale/apicast:v3.15.1 + image: quay.io/3scale/apicast-operator:v0.9.0 name: manager ports: - containerPort: 8080 @@ -300,7 +300,7 @@ spec: - name: GitHub url: https://github.com/3scale/apicast-operator - name: Documentation - url: https://github.com/3scale/apicast-operator/tree/master + url: https://github.com/3scale/apicast-operator/tree/v0.9.0 maintainers: - email: eastizle+apicastoperator@redhat.com name: Eguzki Astiz @@ -308,4 +308,5 @@ spec: minKubeVersion: 1.19.0 provider: name: Red Hat - version: 0.0.1 + replaces: apicast-operator.v0.8.0 + version: 0.9.0 diff --git a/bundle/metadata/annotations.yaml b/bundle/metadata/annotations.yaml index 93eb39e5..17b72ad2 100644 --- a/bundle/metadata/annotations.yaml +++ b/bundle/metadata/annotations.yaml @@ -1,5 +1,6 @@ annotations: - operators.operatorframework.io.bundle.channels.v1: alpha + operators.operatorframework.io.bundle.channel.default.v1: stable + operators.operatorframework.io.bundle.channels.v1: alpha,stable operators.operatorframework.io.bundle.manifests.v1: manifests/ operators.operatorframework.io.bundle.mediatype.v1: registry+v1 operators.operatorframework.io.bundle.metadata.v1: metadata/ diff --git a/config/manager/kustomization.yaml b/config/manager/kustomization.yaml index efd472d1..c47f9558 100644 --- a/config/manager/kustomization.yaml +++ b/config/manager/kustomization.yaml @@ -6,4 +6,4 @@ kind: Kustomization images: - name: controller newName: quay.io/3scale/apicast-operator - newTag: master + newTag: v0.9.0 diff --git a/config/manager/manager.yaml b/config/manager/manager.yaml index 97283bad..7a24e114 100644 --- a/config/manager/manager.yaml +++ b/config/manager/manager.yaml @@ -50,5 +50,5 @@ spec: fieldRef: fieldPath: metadata.namespace - name: RELATED_IMAGE_APICAST - value: "quay.io/3scale/apicast:latest" + value: "quay.io/3scale/apicast:v3.15.1" terminationGracePeriodSeconds: 10 diff --git a/config/manifests/bases/apicast-operator.clusterserviceversion.yaml b/config/manifests/bases/apicast-operator.clusterserviceversion.yaml index d22338f4..d68e3ec5 100644 --- a/config/manifests/bases/apicast-operator.clusterserviceversion.yaml +++ b/config/manifests/bases/apicast-operator.clusterserviceversion.yaml @@ -6,7 +6,7 @@ metadata: capabilities: Full Lifecycle categories: Integration & Delivery certified: "false" - containerImage: quay.io/3scale/apicast-operator:master + containerImage: quay.io/3scale/apicast-operator:v0.9.0 createdAt: "2019-10-27T22:40:00Z" description: APIcast is an API gateway built on top of NGINX. It is part of the Red Hat 3scale API Management Platform olm.properties: '[{"type": "olm.maxOpenShiftVersion", "value": "4.17"}]' @@ -42,10 +42,10 @@ spec: ### Upgrading your installation The APIcast Operator understands how to run and upgrade between a set of APIcast versions. - See [the upgrade guide](https://github.com/3scale/apicast-operator) for more information. + See [the upgrade guide](https://github.com/3scale/apicast-operator/blob/v0.9.0/doc/operator-user-guide.md#upgrading-APIcast) for more information. ### Documentation - Documentation can be found on our [website](https://github.com/3scale/apicast-operator). + Documentation can be found on our [website](https://github.com/3scale/apicast-operator/tree/v0.9.0). ### Getting help If you encounter any issues while using operator, you can create an issue on our [website](https://github.com/3scale/apicast-operator) for bugs, enhancements, or other requests. @@ -62,7 +62,7 @@ spec: ### License APIcast Operator is licensed under the [Apache 2.0 license](https://github.com/3scale/apicast-operator/blob/master/LICENSE) - displayName: APIcast (development latest) + displayName: APIcast icon: - base64data: PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMTAwcHgiIGhlaWdodD0iNTBweCIgdmlld0JveD0iMCAwIDEwMCA1MCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KICAgIDwhLS0gR2VuZXJhdG9yOiBTa2V0Y2ggNTQuMSAoNzY0OTApIC0gaHR0cHM6Ly9za2V0Y2hhcHAuY29tIC0tPgogICAgPHRpdGxlPkdyb3VwIDI8L3RpdGxlPgogICAgPGRlc2M+Q3JlYXRlZCB3aXRoIFNrZXRjaC48L2Rlc2M+CiAgICA8ZyBpZD0iUGFnZS0xIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj4KICAgICAgICA8ZyBpZD0iR3JvdXAtMiI+CiAgICAgICAgICAgIDxyZWN0IGlkPSJSZWN0YW5nbGUiIGZpbGw9IiNGRkZGRkYiIHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAiIGhlaWdodD0iNTAiPjwvcmVjdD4KICAgICAgICAgICAgPGcgaWQ9Ikdyb3VwIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxOS45NDY4MDksIDAuMDAwMDAwKSIgZmlsbD0iI0ZGNzMxNCIgZmlsbC1ydWxlPSJub256ZXJvIj4KICAgICAgICAgICAgICAgIDxnIGlkPSJsb2dvLW1hcmsiPgogICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0wLDkuMDUyNjMxNjEgQzAsNCA0LjIyMzY5MTg1LDAgOS4zMTM3ODE4MywwIEMxNC41MTIxNzE1LDAgMTguNjI3NTYzOCw0LjEwNTI2MzA2IDE4LjYyNzU2MzgsOS4wNTI2MzE2MSBDMTguNjI3NTYzOCwxNC4xMDUyNjMxIDE0LjQwMzg3MiwxOC4xMDUyNjMxIDkuMzEzNzgxODMsMTguMTA1MjYzMSBDNC4yMjM2OTE4NSwxOC4xMDUyNjMxIDAsMTQuMTA1MjYzMSAwLDkuMDUyNjMxNjEgTTQ4LjYyNjYwNTQsMTEuODk0NzM2OSBDNDguNjI2NjA1NCw4Ljg0MjEwNTMyIDUxLjIyNTgwMDEsNi4zMTU3ODkzNSA1NC4zNjY0OTQyLDYuMzE1Nzg5MzUgQzU3LjUwNzE4OCw2LjMxNTc4OTM1IDYwLjEwNjM4Myw4Ljg0MjEwNTMyIDYwLjEwNjM4MywxMS44OTQ3MzY5IEM2MC4xMDYzODMsMTQuOTQ3MzY4NCA1Ny41MDcxODgsMTcuNDczNjg0NCA1NC4zNjY0OTQyLDE3LjQ3MzY4NDQgQzUxLjExNzUwMDQsMTcuNDczNjg0NCA0OC42MjY2MDU0LDE1LjA1MjYzMTYgNDguNjI2NjA1NCwxMS44OTQ3MzY5IE0zMi45MjMxMzYsMzguMTA1MjYzMSBDMzIuOTIzMTM2LDMxLjU3ODk0NzMgMzguNDQ2NDI1MiwyNi4yMTA1MjYzIDQ1LjE2MTAxMiwyNi4yMTA1MjYzIEM1MS44NzU1OTg5LDI2LjIxMDUyNjMgNTcuMzk4ODg4MiwzMS41Nzg5NDczIDU3LjM5ODg4ODIsMzguMTA1MjYzMSBDNTcuMzk4ODg4Miw0NC42MzE1NzkgNTEuODc1NTk4OSw1MCA0NS4xNjEwMTIsNTAgQzM4LjQ0NjQyNTIsNTAgMzIuOTIzMTM2LDQ0LjczNjg0MTkgMzIuOTIzMTM2LDM4LjEwNTI2MzEiIGlkPSJTaGFwZSI+PC9wYXRoPgogICAgICAgICAgICAgICAgPC9nPgogICAgICAgICAgICA8L2c+CiAgICAgICAgPC9nPgogICAgPC9nPgo8L3N2Zz4= mediatype: image/svg+xml @@ -92,7 +92,7 @@ spec: - name: GitHub url: https://github.com/3scale/apicast-operator - name: Documentation - url: https://github.com/3scale/apicast-operator/tree/master + url: https://github.com/3scale/apicast-operator/tree/v0.9.0 maintainers: - email: eastizle+apicastoperator@redhat.com name: Eguzki Astiz @@ -100,4 +100,5 @@ spec: minKubeVersion: 1.19.0 provider: name: Red Hat + replaces: apicast-operator.v0.8.0 version: 0.0.0 diff --git a/doc/community-release-build.md b/doc/community-release-build.md new file mode 100644 index 00000000..059dd7e2 --- /dev/null +++ b/doc/community-release-build.md @@ -0,0 +1,253 @@ +# APIcast-Operator Community Release + +[Introduction](#introduction) +[Main Steps Briefly](#main-steps-briefly) +[Versioning Strategy](#versioning-strategy) +[Steps to Perform Community Release in apicast-operator repo](#steps-to-perform-community-release-in-3scale-operator-repo) +[Prepare release in community-operators-prod repo](#prepare-release-in-community-operators-prod-repo) +[References](#references) + + +## Introduction +* Community Release is primarily created in parallel with minor or patch Product Releases, but a major community may also be released. + * Community Release is not required for every productized build or every product patch release. +* Community release can be released after downstream release +* Community Release codebase is defined by Tag in the [apicast-operator](https://github.com/3scale/apicast-operator) repository. +Tag format as v\.\. (for example: v0.6.0, v0.7.1) +* Community Release bundles are defined in `redhat-openshift-ecosystem` in [apicast-community-operator repo](https://github.com/redhat-openshift-ecosystem/community-operators-prod/tree/main/operators/apicast-community-operator) . + + +## Main Steps Briefly + +Below are briefly the main steps for prepare Community Release + +### APIcast +- Determine which APIcast image you want to use in the new apicast-operator Community release. +Examples of APIcast images in apicast-operator Community releases: +```asciidoc +apicast-operator APIcast image +v0.5.0 quay.io/3scale/apicast:v3.11.0 +v0.6.0 quay.io/3scale/apicast:v3.12.0 +v0.7.1 quay.io/3scale/apicast:v3.13.2 +v0.8.0 quay.io/3scale/apicast:3scale-2.14.1-GA +``` + + +### APIcast operator +* Create Community Release Tag - apply tag to the **3scale-2.X-stable** branch to the CommitID of the base Product Release. + * Tag creation will trigger CircleCI build that will create Operator release Image in this [repo](https://quay.io/repository/3scale/apicast-operator?tab=tags) +* Create a community release development branch in **apicast-operator** repo, based on the Product release CommitID, same CommitID as for Tag, + or, if Product release tag is not yet available, - based on **3scale-2.X-stable** branch. Do development. +* Create PR from community release development branch to a `3scale-2.X-stable` branch (PR example: https://github.com/3scale/apicast-operator/pull/226) +* Do Development, Test and Merge PR to `3scale-2.X-stable` branch +* Testing - Following Testing will be done before PR merge: + * Fresh install + * Upgrade from previous release +* Prepare Community release - create PR in **community-operators-prod** repo (based on manifests from **apicast-operator** repo), +as in [PR example - apicast-community-operator (0.7.1)](https://github.com/redhat-openshift-ecosystem/community-operators-prod/pull/2382) + * **Merge of this PR will publish Release**. +* Do sanity test of the Release after publishing + * Fresh install + * Upgrade from previous release + +## Versioning Strategy +Semantic Versioning scheme will be used for Community releases: MAJOR.MINOR.PATCH. +* MAJOR version: Increments when breaking changes are introduced +* MINOR version: Increments when backward-compatible functionality is added. +* PATCH version: Increments when backward-compatible bug fixes are made. +* APIcast ooperator Community releases Versions examples: 0.6.0, 0.7.1, 0.8.0 +* The Version is used in Community releases Tag name + +```shell +$ git tag |grep -E "0.6|0.7" +v0.6.0 +v0.7.0 +v0.7.1 +``` + +* Tag should be signed. Example of signed tag: +``` + git show v0.7.1 +tag v0.7.1 +Tagger: Eguzki Astiz Lezaun +Date: Tue Mar 14 10:46:34 2023 +0100 + +v0.7.1 +-----BEGIN PGP SIGNATURE----- +xxxxx +xxxxx +-----END PGP SIGNATURE----- + +commit 4f3a2e26fa4e97f28cd0d276dc5d46261354afd4 (tag: v0.7.1, tag: show, tag: 3scale-2.13.2-GA, tag: 3scale-2.13.1-GA) +..... +``` + +## Steps to Perform Community Release in 3scale-operator repo + +1. **Release Tag** + +- Create Community Release Tag - apply tag to the **3scale-2.X-stable** branch to the CommitID of the base Product Release. +- Tag should be **signed** +- Tag Name will be according to Versioning scheme and have prefix "v", like v0.8.0 + - This tag name convention is required for triggering of the Release Image creation in repository: + https://quay.io/repository/3scale/apicast-operator?tab=tags&tag=v0.8.0 + +Below is example of Tag creation + - Look for required CommitID: +```sh +$ cd apicast-operator +$ git switch 3scale-2.14-stable + +$ git log +commit f5b5b4b84ce02245cf5787785575546800c02a31 (HEAD -> 3scale-2.14-stable, tag: 3scale-2.14.1-GA, tag: 2.14.1, origin/3scale-2.14-stable) +..... +``` +- Create **signed** tag +```sh +$ git tag -s v0.8.0 f5b5b4b84ce02245cf5787785575546800c02a31 -m "Community Release v0.8.0" +``` + _Please note that you will need GPG key to create signed tag (not describe in this doc)_ + + - Check tag +```sh +$ git show v0.8.0 +tag v0.8.0 +Tagger: +Date: Wed Oct 9 08:47:18 2024 +0300 + +Community Release v0.8.0 +-----BEGIN PGP SIGNATURE----- +XXXXXXX +``` + + - Push tag to remote repository + - Before pushing the Tag - be sure that GPG key that you used to sign the tag is available in your GitHub account / Settings/ GPG keys. + This will enable GitHub to recognize tags signed with this key as **Verified**. + +```shell +$ git push origin v0.8.0 +``` + - After tag pushing: check in GitHub that tag is present and has "Verified" badge. + +2. **Image creation** +- Image creation process will be triggered after applying the Tag. Image will be created automatically in + https://quay.io/repository/3scale/apicast-operator repository. +- If the image is not created - + - check the [apicast-operator CircleCI Pipeline Builds](https://app.circleci.com/pipelines/github/3scale/apicast-operator), + find your build (by tag), investigate issue, create PR to fix it. + - after fixing and PR merge - delete the tag and create a signed tag again. Recheck CircleCI Pipeline ... + +3. **Community Release Development Branch** + +* Create a Community release development branch from **3scale-2.X-stable** branch **based on Product Release CommitID** + **Note**: same CommitID as for Community Release Tag +``` +$ cd apicast-operator +$ git switch 3scale-2.14-stable +Switched to branch '3scale-2.14-stable' +$ git log +commit f5b5b4b84ce02245cf5787785575546800c02a31 (HEAD -> 3scale-2.14-stable, tag: 3scale-2.14.1-GA, tag: 2.14.1, origin/3scale-2.14-stable) +``` +``` +$ git checkout -b apicast-community-v0.8.0 f5b5b4b84ce02245cf5787785575546800c02a31 +``` + +4. **APIcast Components Images - APIcast** +* Community release can use its own APIcast image or use existing build of APIcast. + You can search [APIcast repository](https://github.com/3scale/APIcast) for APIcast version and Tag to be used + in Community APIcast operator. For example: tag: 3scale-2.14.1-GA, tag: v3.14.0 ... + + +5. **Create PR for apicast-operator Community release development branch** + * Work on PR to have E2E tests passed + * Test fresh Install and Upgrade + * Merge PR to **3scale-2.X-stable** branch + * [Example of the PR, for Community release v0.8.0](https://github.com/3scale/apicast-operator/pull/228) + + +6. **Testing** + + * Testing of `apicast-operator` release development PR must be completed before open PR in `community-operators-prod` repo. + * Testing must be done for `Fresh Install` and `Upgrade`. + +## Prepare release in community-operators-prod repo +See Documentation in [Pull Requests in community operators project](https://github.com/operator-framework/community-operators/blob/master/docs/contributing-via-pr.md) + +**IMPORTANT. All previouse steps, including Testing of apicast-operator (Fresh install and Upgrade) must be completed + before opening a PR in the community-operators-prod repo** + +* Fork & Clone community-operators-prod repo if you don't have it yet +* Get latest changes + +``` +$ git clone git@github.com:redhat-openshift-ecosystem/community-operators-prod.git +$ cd community-operators-prod + +Example for myfork: +$ git remote -v +myfork git@github.com:valerymo/community-operators-prod.git (fetch) +myfork git@github.com:valerymo/community-operators-prod.git (push) +origin git@github.com:redhat-openshift-ecosystem/community-operators-prod.git (fetch) +origin git@github.com:redhat-openshift-ecosystem/community-operators-prod.git (push) +``` + +* Create branch in community-operators-prod repo +``` +$ git checkout -b apicast-community-operator-v0.8.0 +``` + +* Create a new release folder (similar to previous release) +``` +community-operators-prod/operators/apicast-community-operator/0.8.0 +``` + +* Copy manifests from apicast-operator Community release to community-operators-prod, as for example From [apicast-operator PR](https://github.com/3scale/apicast-operator/pull/226) To [community-operators-prod/operators/apicast-community-operator/0.8.0](community-operators-prod/operators/apicast-community-operator/0.8.0) + +* Update CSV. These are things that need pay attention: + * apicast-operator containerImage + * apicast image + * CVS version + * CSV replaces + * CSV name + * CSV description + * CSV urls + * Annotations + * * Update metadata/annotations and bundle.Dockerfile + + +* Compare apicast-community-operator bundle with previous version, and with apicast-operator +* Finally you will have update release bundle structure. +* Commit your changes and Create PR + * Do Signed-off - git commit -s … , It’s required for PR test Pipeline + +``` +[community-operators-prod] (apicast-community-operator-v0.8.0)$ git log +commit xxxxxxxxxxxx (HEAD -> apicast-community-operator-v0.8.0) +Author: xxx xxx +Date: xxx +apicast-community-operator release v0.8.0 +Signed-off-by: xxx xxx +``` + +``` +$ git push -u myfork apicast-community-operator-v0.8.0 +To github.com:valerymo/community-operators-prod.git +.... +``` + +**IMPORTANT. Merging of community-operators-prod PR will trigger Release creation/publishing** + +* Check and confirm all questions in PR description +* Merge +* Test of created release in OSD cluster / OperatorHub +________________ + + +## References + +* [Community operators project documentation](https://github.com/operator-framework/community-operators/blob/master/docs/contributing-via-pr.md) +* [Community operators repository](https://github.com/k8s-operatorhub/community-operators) +* [K8S PR example](https://github.com/k8s-operatorhub/community-operators/pull/2472) +* [OCP PR example](https://github.com/redhat-openshift-ecosystem/community-operators-prod/pull/2382) +* *Check for the latest guidelines about what it needs to be done; they change from time to time* + * *Community operator release process moved* [here - operator-release-process](https://github.com/operator-framework/community-operators/blob/master/docs/operator-release-process.md)