From 70a92578deacd19bca3422be808e9d51a39515de Mon Sep 17 00:00:00 2001 From: Ciara Stacke <18287516+ciarams87@users.noreply.github.com> Date: Fri, 24 Oct 2025 15:15:38 +0100 Subject: [PATCH] Update bundle for v1.0.0/v2.2.0 (#4157) --- .yamllint.yaml | 1 + operators/Makefile | 4 +- operators/README.md | 4 +- ...-gateway-fabric.clusterserviceversion.yaml | 34 ++++++++-- operators/config/manager/kustomization.yaml | 2 +- .../gateway_v1alpha1_nginxgatewayfabric.yaml | 4 +- operators/scripts/update-bundle.sh | 64 ++++++++++++++++++- operators/scripts/update-ngf-img-version.sh | 2 +- 8 files changed, 101 insertions(+), 14 deletions(-) diff --git a/.yamllint.yaml b/.yamllint.yaml index 2ba44f7656..6b5af8a6ec 100644 --- a/.yamllint.yaml +++ b/.yamllint.yaml @@ -41,6 +41,7 @@ rules: .goreleaser.yml charts/nginx-gateway-fabric/ operators/config/crd/bases/gateway.nginx.org_nginxgatewayfabrics.yaml + operators/bundle/manifests/nginx-gateway-fabric.clusterserviceversion.yaml new-line-at-end-of-file: enable new-lines: enable octal-values: disable diff --git a/operators/Makefile b/operators/Makefile index 9548334090..21352feb5c 100644 --- a/operators/Makefile +++ b/operators/Makefile @@ -8,9 +8,9 @@ OPERATOR_SDK_VERSION ?= v1.41.1 # renovate: datasource=github-tags depName=kubernetes-sigs/kustomize KUSTOMIZE_VERSION ?= v5.6.0 -IMAGE_TAG_BASE ?= nginx-gateway-fabric/operator +IMAGE_TAG_BASE ?= ghcr.io/nginx/nginx-gateway-fabric/operator -IMG ?= $(IMAGE_TAG_BASE):v$(VERSION) +IMG ?= $(IMAGE_TAG_BASE):$(VERSION) ## Bundle config diff --git a/operators/README.md b/operators/README.md index d995a6f26a..883c0817b4 100644 --- a/operators/README.md +++ b/operators/README.md @@ -116,11 +116,11 @@ However, there are a few items that need to be kept in sync manually: 3. Operator version: Update the VERSION in the Makefile to reflect the version of the Operator being released. -When you are ready to release the bundle, run `make release-bundle`. This will update the NGF image version tags, and create the bundle manifests. +When you are ready to release the bundle, run `make bundle-release`. This will update the NGF image version tags, and create the bundle manifests. To test the bundle locally, follow the `Building and Testing the Operator Locally` above. -To submit the bundle for certification, follow TBD. +To submit the bundle for certification, open a PR in the [RedHat Certified Operators repo](https://github.com/redhat-openshift-ecosystem/certified-operators) using your a branch from your own fork (Note: must have RedHat Portal access) following the guidelines in the repo. ## License diff --git a/operators/bundle/manifests/nginx-gateway-fabric.clusterserviceversion.yaml b/operators/bundle/manifests/nginx-gateway-fabric.clusterserviceversion.yaml index 7cd0224a75..81b5405153 100644 --- a/operators/bundle/manifests/nginx-gateway-fabric.clusterserviceversion.yaml +++ b/operators/bundle/manifests/nginx-gateway-fabric.clusterserviceversion.yaml @@ -144,11 +144,32 @@ metadata: } ] capabilities: Basic Install - createdAt: "2025-10-06T09:33:54Z" + createdAt: "2025-10-23T13:55:48Z" operators.operatorframework.io/builder: operator-sdk-v1.41.1 operators.operatorframework.io/project_layout: helm.sdk.operatorframework.io/v1 + categories: Networking + certified: "true" + containerImage: ghcr.io/nginx/nginx-gateway-fabric/operator@sha256:e2a8de4ef9724ef2e4f0b2b648681b4a4b6a5714ba111dd9348c5599dd552a84 + description: The NGINX Gateway Fabric is a Kubernetes Gateway API implementation that provides application traffic management for modern cloud-native applications + features.operators.openshift.io/cnf: "false" + features.operators.openshift.io/cni: "false" + features.operators.openshift.io/csi: "false" + features.operators.openshift.io/disconnected: "false" + features.operators.openshift.io/fips-compliant: "false" + features.operators.openshift.io/proxy-aware: "false" + features.operators.openshift.io/tls-profiles: "false" + features.operators.openshift.io/token-auth-aws: "false" + features.operators.openshift.io/token-auth-azure: "false" + features.operators.openshift.io/token-auth-gcp: "false" + operatorframework.io/suggested-namespace: nginx-gateway + repository: https://github.com/nginx/nginx-gateway-fabric + support: NGINX Inc. + com.redhat.openshift.versions: v4.19 name: nginx-gateway-fabric.v1.0.0 namespace: placeholder + labels: + operatorframework.io/arch.amd64: supported + operatorframework.io/arch.arm64: supported spec: apiservicedefinitions: {} customresourcedefinitions: @@ -207,8 +228,8 @@ spec: description: NGINX Gateway Fabric provides an implementation of the Gateway API using NGINX as the data plane displayName: NGINX Gateway Fabric icon: - - base64data: "" - mediatype: "" + - base64data: "PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyBpZD0iSWNvbnMiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDkwIDgwIj4KICA8ZGVmcz4KICAgIDxzdHlsZT4KICAgICAgLmNscy0xIHsKICAgICAgICBmaWxsOiAjMDA5NjM5OwogICAgICB9CgogICAgICAuY2xzLTIgewogICAgICAgIGZpbGw6ICM3NTc1NzU7CiAgICAgIH0KCiAgICAgIC5jbHMtMywgLmNscy00IHsKICAgICAgICBmaWxsOiBub25lOwogICAgICAgIHN0cm9rZTogI2ZmZjsKICAgICAgICBzdHJva2UtbGluZWNhcDogcm91bmQ7CiAgICAgICAgc3Ryb2tlLWxpbmVqb2luOiByb3VuZDsKICAgICAgICBzdHJva2Utd2lkdGg6IC45NXB4OwogICAgICB9CgogICAgICAuY2xzLTUgewogICAgICAgIGZpbGw6ICNmZmY7CiAgICAgIH0KCiAgICAgIC5jbHMtNCB7CiAgICAgICAgZmlsbC1ydWxlOiBldmVub2RkOwogICAgICB9CiAgICA8L3N0eWxlPgogIDwvZGVmcz4KICA8Zz4KICAgIDxwYXRoIGNsYXNzPSJjbHMtMiIgZD0iTTExLjg2LDYyLjRsLTQuMjgtNS45MnY1LjkyaC0uOTF2LTcuMzRoLjk0bDQuMjIsNS44di01LjhoLjkxdjcuMzRoLS44OFoiLz4KICAgIDxwYXRoIGNsYXNzPSJjbHMtMiIgZD0iTTE3LjkzLDU0Ljk0YzEuMywwLDIuMi41NywyLjg1LDEuMzdsLS43My40NWMtLjQ2LS41OS0xLjI0LTEuMDEtMi4xMi0xLjAxLTEuNjEsMC0yLjgzLDEuMjMtMi44MywyLjk4czEuMjIsMi45OSwyLjgzLDIuOTljLjg4LDAsMS42MS0uNDMsMS45Ny0uNzl2LTEuNWgtMi41MnYtLjgxaDMuNDN2Mi42NWMtLjY4Ljc2LTEuNjgsMS4yNi0yLjg4LDEuMjYtMi4wOSwwLTMuNzctMS41My0zLjc3LTMuODFzMS42OC0zLjgsMy43Ny0zLjhaIi8+CiAgICA8cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik0yMi4zLDYyLjR2LTcuMzRoLjkxdjcuMzRoLS45MVoiLz4KICAgIDxwYXRoIGNsYXNzPSJjbHMtMiIgZD0iTTMwLjEyLDYyLjRsLTQuMjgtNS45MnY1LjkyaC0uOTF2LTcuMzRoLjk0bDQuMjIsNS44di01LjhoLjkxdjcuMzRoLS44OFoiLz4KICAgIDxwYXRoIGNsYXNzPSJjbHMtMiIgZD0iTTM3Ljc5LDYyLjRsLTIuMzQtMy4xMi0yLjM0LDMuMTJoLTEuMTFsMi44Ni0zLjc2LTIuNy0zLjU4aDEuMTFsMi4xOCwyLjk0LDIuMTctMi45NGgxLjExbC0yLjY4LDMuNTYsMi44NSwzLjc3aC0xLjFaIi8+CiAgICA8cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik00Ni4yLDU0Ljk0YzEuMywwLDIuMi41NywyLjg1LDEuMzdsLS43My40NWMtLjQ2LS41OS0xLjI0LTEuMDEtMi4xMi0xLjAxLTEuNjEsMC0yLjgzLDEuMjMtMi44MywyLjk4czEuMjIsMi45OSwyLjgzLDIuOTljLjg4LDAsMS42MS0uNDMsMS45Ny0uNzl2LTEuNWgtMi41MnYtLjgxaDMuNDN2Mi42NWMtLjY4Ljc2LTEuNjgsMS4yNi0yLjg4LDEuMjYtMi4wOSwwLTMuNzctMS41My0zLjc3LTMuODFzMS42OC0zLjgsMy43Ny0zLjhaIi8+CiAgICA8cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik01My44Niw2Mi40di0uNjFjLS40NC40OC0xLjA0Ljc0LTEuNzYuNzQtLjksMC0xLjg2LS42LTEuODYtMS43NnMuOTYtMS43NSwxLjg2LTEuNzVjLjczLDAsMS4zMy4yMywxLjc2Ljczdi0uOTZjMC0uNzEtLjU3LTEuMTItMS4zNC0xLjEyLS42NCwwLTEuMTYuMjMtMS42My43NGwtLjM5LS41N2MuNTctLjU5LDEuMjUtLjg4LDIuMTItLjg4LDEuMTIsMCwyLjA2LjUxLDIuMDYsMS43OXYzLjY1aC0uODNaTTUzLjg2LDYwLjI3Yy0uMzItLjQ0LS44OC0uNjYtMS40Ni0uNjYtLjc3LDAtMS4zMS40OC0xLjMxLDEuMTdzLjU0LDEuMTYsMS4zMSwxLjE2Yy41OCwwLDEuMTQtLjIyLDEuNDYtLjY2di0xWiIvPgogICAgPHBhdGggY2xhc3M9ImNscy0yIiBkPSJNNTYuNSw2MS4yOXYtMy40OGgtLjg4di0uNzNoLjg4di0xLjQ1aC44M3YxLjQ1aDEuMDh2LjczaC0xLjA4djMuM2MwLC40LjE4LjY4LjU0LjY4LjIzLDAsLjQ1LS4xLjU2LS4yMmwuMjQuNjJjLS4yMS4yLS41MS4zNC0uOTkuMzQtLjc4LDAtMS4xOC0uNDUtMS4xOC0xLjI0WiIvPgogICAgPHBhdGggY2xhc3M9ImNscy0yIiBkPSJNNjEuODcsNTYuOTVjMS42MSwwLDIuNTUsMS4yNSwyLjU1LDIuODV2LjIxaC00LjNjLjA3LDEsLjc3LDEuODQsMS45MSwxLjg0LjYxLDAsMS4yMi0uMjQsMS42NC0uNjdsLjQuNTRjLS41My41My0xLjI0LjgxLTIuMTEuODEtMS41NywwLTIuNzEtMS4xMy0yLjcxLTIuNzksMC0xLjU0LDEuMS0yLjc4LDIuNjItMi43OFpNNjAuMTIsNTkuNGgzLjQ5Yy0uMDEtLjc5LS41NC0xLjc3LTEuNzUtMS43Ny0xLjEzLDAtMS42OS45Ni0xLjc0LDEuNzdaIi8+CiAgICA8cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik03MC4zNiw2Mi40bC0xLjM5LTQuMjctMS4zOSw0LjI3aC0uODNsLTEuNjktNS4zMWguODZsMS4zLDQuMjQsMS40LTQuMjRoLjdsMS40LDQuMjQsMS4zLTQuMjRoLjg2bC0xLjY5LDUuMzFoLS44M1oiLz4KICAgIDxwYXRoIGNsYXNzPSJjbHMtMiIgZD0iTTc3LjE1LDYyLjR2LS42MWMtLjQ0LjQ4LTEuMDQuNzQtMS43Ni43NC0uOSwwLTEuODYtLjYtMS44Ni0xLjc2cy45Ni0xLjc1LDEuODYtMS43NWMuNzMsMCwxLjMzLjIzLDEuNzYuNzN2LS45NmMwLS43MS0uNTctMS4xMi0xLjM0LTEuMTItLjY0LDAtMS4xNS4yMy0xLjYzLjc0bC0uMzgtLjU3Yy41Ny0uNTksMS4yNS0uODgsMi4xMi0uODgsMS4xMiwwLDIuMDYuNTEsMi4wNiwxLjc5djMuNjVoLS44M1pNNzcuMTUsNjAuMjdjLS4zMi0uNDQtLjg4LS42Ni0xLjQ2LS42Ni0uNzcsMC0xLjMxLjQ4LTEuMzEsMS4xN3MuNTQsMS4xNiwxLjMxLDEuMTZjLjU4LDAsMS4xNC0uMjIsMS40Ni0uNjZ2LTFaIi8+CiAgICA8cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik03OS40Niw2My43M2MuMTIuMDUuMzIuMDkuNDUuMDkuMzYsMCwuNi0uMTIuNzktLjU2bC4zNS0uOC0yLjIyLTUuMzdoLjg5bDEuNzcsNC4zNiwxLjc2LTQuMzZoLjlsLTIuNjYsNi4zOWMtLjMyLjc3LS44NiwxLjA3LTEuNTYsMS4wOC0uMTgsMC0uNDUtLjAzLS42LS4wOGwuMTMtLjc1WiIvPgogICAgPHBhdGggY2xhc3M9ImNscy0yIiBkPSJNMzEsNzMuNHYtNy4zNGg0Ljgxdi44MWgtMy44OXYyLjM3aDMuODJ2LjgxaC0zLjgydjMuMzRoLS45MVoiLz4KICAgIDxwYXRoIGNsYXNzPSJjbHMtMiIgZD0iTTQwLjM0LDczLjR2LS42MWMtLjQ0LjQ4LTEuMDQuNzQtMS43Ni43NC0uOSwwLTEuODYtLjYtMS44Ni0xLjc2cy45Ni0xLjc1LDEuODYtMS43NWMuNzMsMCwxLjMzLjIzLDEuNzYuNzN2LS45NmMwLS43MS0uNTctMS4xMi0xLjM0LTEuMTItLjY0LDAtMS4xNS4yMy0xLjYzLjc0bC0uMzgtLjU3Yy41Ny0uNTksMS4yNS0uODgsMi4xMi0uODgsMS4xMiwwLDIuMDYuNTEsMi4wNiwxLjc5djMuNjVoLS44M1pNNDAuMzQsNzEuMjdjLS4zMi0uNDQtLjg4LS42Ni0xLjQ2LS42Ni0uNzcsMC0xLjMxLjQ4LTEuMzEsMS4xN3MuNTQsMS4xNiwxLjMxLDEuMTZjLjU4LDAsMS4xNC0uMjIsMS40Ni0uNjZ2LTFaIi8+CiAgICA8cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik00Mi44MSw3My40di03LjM0aC44M3YyLjgzYy40My0uNTgsMS4wNy0uOTMsMS43OS0uOTMsMS4zOSwwLDIuMzcsMS4xLDIuMzcsMi43OXMtLjk4LDIuNzgtMi4zNywyLjc4Yy0uNzUsMC0xLjQtLjM4LTEuNzktLjkydi43OWgtLjgzWk00My42NCw3MS45NmMuMjkuNDYuOTMuODQsMS41OC44NCwxLjA4LDAsMS43Mi0uODcsMS43Mi0yLjA1cy0uNjQtMi4wNi0xLjcyLTIuMDZjLS42NSwwLTEuMy40LTEuNTguODZ2Mi40MVoiLz4KICAgIDxwYXRoIGNsYXNzPSJjbHMtMiIgZD0iTTQ5LjE0LDczLjR2LTUuMzFoLjgzdi44NmMuNDMtLjU2LDEuMDQtLjk3LDEuNzctLjk3di44NWMtLjEtLjAyLS4yLS4wMy0uMzMtLjAzLS41MSwwLTEuMi40Mi0xLjQ0Ljg1djMuNzZoLS44M1oiLz4KICAgIDxwYXRoIGNsYXNzPSJjbHMtMiIgZD0iTTUyLjYyLDY2LjYzYzAtLjMxLjI1LS41NS41NS0uNTVzLjU2LjI0LjU2LjU1LS4yNS41Ni0uNTYuNTYtLjU1LS4yNS0uNTUtLjU2Wk01Mi43Nyw3My40di01LjMxaC44M3Y1LjMxaC0uODNaIi8+CiAgICA8cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik01Ny41OCw2Ny45NWMuOTcsMCwxLjU0LjQsMS45NS45MmwtLjU1LjUxYy0uMzUtLjQ4LS44LS42OS0xLjM1LS42OS0xLjEzLDAtMS44NC44Ny0xLjg0LDIuMDVzLjcsMi4wNiwxLjg0LDIuMDZjLjU1LDAsMS0uMjIsMS4zNS0uNjlsLjU1LjUxYy0uNDEuNTMtLjk4LjkyLTEuOTUuOTItMS41OCwwLTIuNjUtMS4yMS0yLjY1LTIuNzlzMS4wNy0yLjc4LDIuNjUtMi43OFoiLz4KICA8L2c+CiAgPGc+CiAgICA8Y2lyY2xlIGNsYXNzPSJjbHMtMSIgY3g9IjQ4LjM5IiBjeT0iMjUiIHI9IjIwIi8+CiAgICA8Zz4KICAgICAgPGNpcmNsZSBjbGFzcz0iY2xzLTUiIGN4PSI0MC40MiIgY3k9IjM0LjQzIiByPSIyLjkxIi8+CiAgICAgIDxjaXJjbGUgY2xhc3M9ImNscy01IiBjeD0iMzYuMyIgY3k9IjI1LjAxIiByPSIyLjkxIi8+CiAgICAgIDxjaXJjbGUgY2xhc3M9ImNscy01IiBjeD0iNDAuNDIiIGN5PSIxNS41NyIgcj0iMi45MSIvPgogICAgICA8bGluZSBjbGFzcz0iY2xzLTMiIHgxPSI0Mi40OSIgeTE9IjMyLjM5IiB4Mj0iNDYuMDMiIHkyPSIyOC44NCIvPgogICAgICA8bGluZSBjbGFzcz0iY2xzLTMiIHgxPSI0Mi40OSIgeTE9IjE3LjYyIiB4Mj0iNDYuMDQiIHkyPSIyMS4xNyIvPgogICAgICA8bGluZSBjbGFzcz0iY2xzLTMiIHgxPSIzOS4yNCIgeTE9IjI1LjAxIiB4Mj0iNDQuNDIiIHkyPSIyNS4wMSIvPgogICAgICA8cG9seWxpbmUgY2xhc3M9ImNscy00IiBwb2ludHM9IjUyLjMxIDI0LjgyIDYzLjM5IDI0LjgyIDYwLjI1IDI3Ljk2Ii8+CiAgICAgIDxjaXJjbGUgY2xhc3M9ImNscy01IiBjeD0iNDkuOTEiIGN5PSIyNS4wMSIgcj0iNS40NSIvPgogICAgICA8bGluZSBjbGFzcz0iY2xzLTMiIHgxPSI2MC4yNSIgeTE9IjIxLjYiIHgyPSI2My4zOSIgeTI9IjI0Ljc0Ii8+CiAgICA8L2c+CiAgPC9nPgo8L3N2Zz4=" + mediatype: "image/svg+xml" install: spec: clusterPermissions: @@ -433,7 +454,7 @@ spec: - --leader-elect - --leader-election-id=nginx-gateway-fabric - --health-probe-bind-address=:8081 - image: ghcr.io/nginx/nginx-gateway-fabric/operator:v1.0.0 + image: ghcr.io/nginx/nginx-gateway-fabric/operator@sha256:e2a8de4ef9724ef2e4f0b2b648681b4a4b6a5714ba111dd9348c5599dd552a84 livenessProbe: httpGet: path: /healthz @@ -516,7 +537,7 @@ spec: - networking links: - name: Nginx Gateway Fabric - url: https://nginx-gateway-fabric.domain + url: https://github.com/nginx/nginx-gateway-fabric maintainers: - email: kubernetes@nginx.com name: F5NGINX @@ -525,4 +546,7 @@ spec: provider: name: F5 NGINX url: https://www.f5.com/go/product/welcome-to-nginx + relatedImages: + - image: ghcr.io/nginx/nginx-gateway-fabric/operator@sha256:e2a8de4ef9724ef2e4f0b2b648681b4a4b6a5714ba111dd9348c5599dd552a84 + name: manager version: 1.0.0 diff --git a/operators/config/manager/kustomization.yaml b/operators/config/manager/kustomization.yaml index e89ad04fe3..3ee5a05cb6 100644 --- a/operators/config/manager/kustomization.yaml +++ b/operators/config/manager/kustomization.yaml @@ -5,4 +5,4 @@ kind: Kustomization images: - name: controller newName: ghcr.io/nginx/nginx-gateway-fabric/operator - newTag: v1.0.0 + newTag: 1.0.0 diff --git a/operators/config/samples/gateway_v1alpha1_nginxgatewayfabric.yaml b/operators/config/samples/gateway_v1alpha1_nginxgatewayfabric.yaml index c52e22e49d..3d019f5b02 100644 --- a/operators/config/samples/gateway_v1alpha1_nginxgatewayfabric.yaml +++ b/operators/config/samples/gateway_v1alpha1_nginxgatewayfabric.yaml @@ -30,7 +30,7 @@ spec: image: pullPolicy: IfNotPresent repository: ghcr.io/nginx/nginx-gateway-fabric/nginx - tag: 2.2.0-ubi + tag: "2.2.0-ubi" imagePullSecret: "" imagePullSecrets: [] kind: deployment @@ -77,7 +77,7 @@ spec: image: pullPolicy: IfNotPresent repository: ghcr.io/nginx/nginx-gateway-fabric - tag: 2.2.0-ubi + tag: "2.2.0-ubi" kind: deployment labels: {} leaderElection: diff --git a/operators/scripts/update-bundle.sh b/operators/scripts/update-bundle.sh index 40336d32b9..d5781fc0cd 100755 --- a/operators/scripts/update-bundle.sh +++ b/operators/scripts/update-bundle.sh @@ -1,7 +1,8 @@ #!/bin/bash -# update-bundle.sh - Run after 'make bundle' to add missing scorecard fields +# update-bundle.sh - Run after 'make bundle' to add missing scorecard fields and OpenShift annotations CSV_FILE="bundle/manifests/nginx-gateway-fabric.clusterserviceversion.yaml" +ANNOTATIONS_FILE="bundle/metadata/annotations.yaml" # Check if CSV file exists if [ ! -f "$CSV_FILE" ]; then @@ -9,6 +10,12 @@ if [ ! -f "$CSV_FILE" ]; then exit 1 fi +# Check if annotations file exists +if [ ! -f "$ANNOTATIONS_FILE" ]; then + echo "Error: Annotations file not found at $ANNOTATIONS_FILE" + exit 1 +fi + echo "Adding resources and specDescriptors to $CSV_FILE..." # Use yq to add the resources and specDescriptors @@ -31,4 +38,59 @@ yq eval ' ] ' -i "$CSV_FILE" +echo "Adding OpenShift annotations to $ANNOTATIONS_FILE..." + +# Always ensure OpenShift annotations are present with proper comment +# (Operator SDK strips these during bundle generation but they're required for certification) +if ! grep -q "# OpenShift annotations." "$ANNOTATIONS_FILE"; then + # Check if annotation exists without comment and remove it + if grep -q "com.redhat.openshift.versions" "$ANNOTATIONS_FILE"; then + # Remove the annotation line without comment + sed -i '' '/^[[:space:]]*com\.redhat\.openshift\.versions:/d' "$ANNOTATIONS_FILE" + fi + + # Add the OpenShift annotations section with proper comment + cat >>"$ANNOTATIONS_FILE" <<'EOF' + + # OpenShift annotations. + com.redhat.openshift.versions: v4.19 +EOF + echo "Added OpenShift annotation with comment to $ANNOTATIONS_FILE" +else + echo "OpenShift annotation with comment already exists in $ANNOTATIONS_FILE" +fi + +echo "Adding certification annotations to $CSV_FILE..." + +# Get the container image from spec.relatedImages[0].image +CONTAINER_IMAGE=$(yq eval '.spec.relatedImages[0].image' "$CSV_FILE") + +# Add certification annotations to CSV metadata +yq eval --inplace ' +.metadata.annotations.categories = "Networking" | +.metadata.annotations.certified = "true" | +.metadata.annotations.containerImage = "'"$CONTAINER_IMAGE"'" | +.metadata.annotations.description = "The NGINX Gateway Fabric is a Kubernetes Gateway API implementation that provides application traffic management for modern cloud-native applications" | +.metadata.annotations."features.operators.openshift.io/cnf" = "false" | +.metadata.annotations."features.operators.openshift.io/cni" = "false" | +.metadata.annotations."features.operators.openshift.io/csi" = "false" | +.metadata.annotations."features.operators.openshift.io/disconnected" = "false" | +.metadata.annotations."features.operators.openshift.io/fips-compliant" = "false" | +.metadata.annotations."features.operators.openshift.io/proxy-aware" = "false" | +.metadata.annotations."features.operators.openshift.io/tls-profiles" = "false" | +.metadata.annotations."features.operators.openshift.io/token-auth-aws" = "false" | +.metadata.annotations."features.operators.openshift.io/token-auth-azure" = "false" | +.metadata.annotations."features.operators.openshift.io/token-auth-gcp" = "false" | +.metadata.annotations."operatorframework.io/suggested-namespace" = "nginx-gateway" | +.metadata.annotations.repository = "https://github.com/nginx/nginx-gateway-fabric" | +.metadata.annotations.support = "NGINX Inc." | +.metadata.annotations."com.redhat.openshift.versions" = "v4.19" | +.metadata.labels."operatorframework.io/arch.amd64" = "supported" | +.metadata.labels."operatorframework.io/arch.arm64" = "supported" | +.spec.links[0].url = "https://github.com/nginx/nginx-gateway-fabric" | +.spec.icon[0].base64data = "PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyBpZD0iSWNvbnMiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDkwIDgwIj4KICA8ZGVmcz4KICAgIDxzdHlsZT4KICAgICAgLmNscy0xIHsKICAgICAgICBmaWxsOiAjMDA5NjM5OwogICAgICB9CgogICAgICAuY2xzLTIgewogICAgICAgIGZpbGw6ICM3NTc1NzU7CiAgICAgIH0KCiAgICAgIC5jbHMtMywgLmNscy00IHsKICAgICAgICBmaWxsOiBub25lOwogICAgICAgIHN0cm9rZTogI2ZmZjsKICAgICAgICBzdHJva2UtbGluZWNhcDogcm91bmQ7CiAgICAgICAgc3Ryb2tlLWxpbmVqb2luOiByb3VuZDsKICAgICAgICBzdHJva2Utd2lkdGg6IC45NXB4OwogICAgICB9CgogICAgICAuY2xzLTUgewogICAgICAgIGZpbGw6ICNmZmY7CiAgICAgIH0KCiAgICAgIC5jbHMtNCB7CiAgICAgICAgZmlsbC1ydWxlOiBldmVub2RkOwogICAgICB9CiAgICA8L3N0eWxlPgogIDwvZGVmcz4KICA8Zz4KICAgIDxwYXRoIGNsYXNzPSJjbHMtMiIgZD0iTTExLjg2LDYyLjRsLTQuMjgtNS45MnY1LjkyaC0uOTF2LTcuMzRoLjk0bDQuMjIsNS44di01LjhoLjkxdjcuMzRoLS44OFoiLz4KICAgIDxwYXRoIGNsYXNzPSJjbHMtMiIgZD0iTTE3LjkzLDU0Ljk0YzEuMywwLDIuMi41NywyLjg1LDEuMzdsLS43My40NWMtLjQ2LS41OS0xLjI0LTEuMDEtMi4xMi0xLjAxLTEuNjEsMC0yLjgzLDEuMjMtMi44MywyLjk4czEuMjIsMi45OSwyLjgzLDIuOTljLjg4LDAsMS42MS0uNDMsMS45Ny0uNzl2LTEuNWgtMi41MnYtLjgxaDMuNDN2Mi42NWMtLjY4Ljc2LTEuNjgsMS4yNi0yLjg4LDEuMjYtMi4wOSwwLTMuNzctMS41My0zLjc3LTMuODFzMS42OC0zLjgsMy43Ny0zLjhaIi8+CiAgICA8cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik0yMi4zLDYyLjR2LTcuMzRoLjkxdjcuMzRoLS45MVoiLz4KICAgIDxwYXRoIGNsYXNzPSJjbHMtMiIgZD0iTTMwLjEyLDYyLjRsLTQuMjgtNS45MnY1LjkyaC0uOTF2LTcuMzRoLjk0bDQuMjIsNS44di01LjhoLjkxdjcuMzRoLS44OFoiLz4KICAgIDxwYXRoIGNsYXNzPSJjbHMtMiIgZD0iTTM3Ljc5LDYyLjRsLTIuMzQtMy4xMi0yLjM0LDMuMTJoLTEuMTFsMi44Ni0zLjc2LTIuNy0zLjU4aDEuMTFsMi4xOCwyLjk0LDIuMTctMi45NGgxLjExbC0yLjY4LDMuNTYsMi44NSwzLjc3aC0xLjFaIi8+CiAgICA8cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik00Ni4yLDU0Ljk0YzEuMywwLDIuMi41NywyLjg1LDEuMzdsLS43My40NWMtLjQ2LS41OS0xLjI0LTEuMDEtMi4xMi0xLjAxLTEuNjEsMC0yLjgzLDEuMjMtMi44MywyLjk4czEuMjIsMi45OSwyLjgzLDIuOTljLjg4LDAsMS42MS0uNDMsMS45Ny0uNzl2LTEuNWgtMi41MnYtLjgxaDMuNDN2Mi42NWMtLjY4Ljc2LTEuNjgsMS4yNi0yLjg4LDEuMjYtMi4wOSwwLTMuNzctMS41My0zLjc3LTMuODFzMS42OC0zLjgsMy43Ny0zLjhaIi8+CiAgICA8cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik01My44Niw2Mi40di0uNjFjLS40NC40OC0xLjA0Ljc0LTEuNzYuNzQtLjksMC0xLjg2LS42LTEuODYtMS43NnMuOTYtMS43NSwxLjg2LTEuNzVjLjczLDAsMS4zMy4yMywxLjc2Ljczdi0uOTZjMC0uNzEtLjU3LTEuMTItMS4zNC0xLjEyLS42NCwwLTEuMTYuMjMtMS42My43NGwtLjM5LS41N2MuNTctLjU5LDEuMjUtLjg4LDIuMTItLjg4LDEuMTIsMCwyLjA2LjUxLDIuMDYsMS43OXYzLjY1aC0uODNaTTUzLjg2LDYwLjI3Yy0uMzItLjQ0LS44OC0uNjYtMS40Ni0uNjYtLjc3LDAtMS4zMS40OC0xLjMxLDEuMTdzLjU0LDEuMTYsMS4zMSwxLjE2Yy41OCwwLDEuMTQtLjIyLDEuNDYtLjY2di0xWiIvPgogICAgPHBhdGggY2xhc3M9ImNscy0yIiBkPSJNNTYuNSw2MS4yOXYtMy40OGgtLjg4di0uNzNoLjg4di0xLjQ1aC44M3YxLjQ1aDEuMDh2LjczaC0xLjA4djMuM2MwLC40LjE4LjY4LjU0LjY4LjIzLDAsLjQ1LS4xLjU2LS4yMmwuMjQuNjJjLS4yMS4yLS41MS4zNC0uOTkuMzQtLjc4LDAtMS4xOC0uNDUtMS4xOC0xLjI0WiIvPgogICAgPHBhdGggY2xhc3M9ImNscy0yIiBkPSJNNjEuODcsNTYuOTVjMS42MSwwLDIuNTUsMS4yNSwyLjU1LDIuODV2LjIxaC00LjNjLjA3LDEsLjc3LDEuODQsMS45MSwxLjg0LjYxLDAsMS4yMi0uMjQsMS42NC0uNjdsLjQuNTRjLS41My41My0xLjI0LjgxLTIuMTEuODEtMS41NywwLTIuNzEtMS4xMy0yLjcxLTIuNzksMC0xLjU0LDEuMS0yLjc4LDIuNjItMi43OFpNNjAuMTIsNTkuNGgzLjQ5Yy0uMDEtLjc5LS41NC0xLjc3LTEuNzUtMS43Ny0xLjEzLDAtMS42OS45Ni0xLjc0LDEuNzdaIi8+CiAgICA8cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik03MC4zNiw2Mi40bC0xLjM5LTQuMjctMS4zOSw0LjI3aC0uODNsLTEuNjktNS4zMWguODZsMS4zLDQuMjQsMS40LTQuMjRoLjdsMS40LDQuMjQsMS4zLTQuMjRoLjg2bC0xLjY5LDUuMzFoLS44M1oiLz4KICAgIDxwYXRoIGNsYXNzPSJjbHMtMiIgZD0iTTc3LjE1LDYyLjR2LS42MWMtLjQ0LjQ4LTEuMDQuNzQtMS43Ni43NC0uOSwwLTEuODYtLjYtMS44Ni0xLjc2cy45Ni0xLjc1LDEuODYtMS43NWMuNzMsMCwxLjMzLjIzLDEuNzYuNzN2LS45NmMwLS43MS0uNTctMS4xMi0xLjM0LTEuMTItLjY0LDAtMS4xNS4yMy0xLjYzLjc0bC0uMzgtLjU3Yy41Ny0uNTksMS4yNS0uODgsMi4xMi0uODgsMS4xMiwwLDIuMDYuNTEsMi4wNiwxLjc5djMuNjVoLS44M1pNNzcuMTUsNjAuMjdjLS4zMi0uNDQtLjg4LS42Ni0xLjQ2LS42Ni0uNzcsMC0xLjMxLjQ4LTEuMzEsMS4xN3MuNTQsMS4xNiwxLjMxLDEuMTZjLjU4LDAsMS4xNC0uMjIsMS40Ni0uNjZ2LTFaIi8+CiAgICA8cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik03OS40Niw2My43M2MuMTIuMDUuMzIuMDkuNDUuMDkuMzYsMCwuNi0uMTIuNzktLjU2bC4zNS0uOC0yLjIyLTUuMzdoLjg5bDEuNzcsNC4zNiwxLjc2LTQuMzZoLjlsLTIuNjYsNi4zOWMtLjMyLjc3LS44NiwxLjA3LTEuNTYsMS4wOC0uMTgsMC0uNDUtLjAzLS42LS4wOGwuMTMtLjc1WiIvPgogICAgPHBhdGggY2xhc3M9ImNscy0yIiBkPSJNMzEsNzMuNHYtNy4zNGg0Ljgxdi44MWgtMy44OXYyLjM3aDMuODJ2LjgxaC0zLjgydjMuMzRoLS45MVoiLz4KICAgIDxwYXRoIGNsYXNzPSJjbHMtMiIgZD0iTTQwLjM0LDczLjR2LS42MWMtLjQ0LjQ4LTEuMDQuNzQtMS43Ni43NC0uOSwwLTEuODYtLjYtMS44Ni0xLjc2cy45Ni0xLjc1LDEuODYtMS43NWMuNzMsMCwxLjMzLjIzLDEuNzYuNzN2LS45NmMwLS43MS0uNTctMS4xMi0xLjM0LTEuMTItLjY0LDAtMS4xNS4yMy0xLjYzLjc0bC0uMzgtLjU3Yy41Ny0uNTksMS4yNS0uODgsMi4xMi0uODgsMS4xMiwwLDIuMDYuNTEsMi4wNiwxLjc5djMuNjVoLS44M1pNNDAuMzQsNzEuMjdjLS4zMi0uNDQtLjg4LS42Ni0xLjQ2LS42Ni0uNzcsMC0xLjMxLjQ4LTEuMzEsMS4xN3MuNTQsMS4xNiwxLjMxLDEuMTZjLjU4LDAsMS4xNC0uMjIsMS40Ni0uNjZ2LTFaIi8+CiAgICA8cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik00Mi44MSw3My40di03LjM0aC44M3YyLjgzYy40My0uNTgsMS4wNy0uOTMsMS43OS0uOTMsMS4zOSwwLDIuMzcsMS4xLDIuMzcsMi43OXMtLjk4LDIuNzgtMi4zNywyLjc4Yy0uNzUsMC0xLjQtLjM4LTEuNzktLjkydi43OWgtLjgzWk00My42NCw3MS45NmMuMjkuNDYuOTMuODQsMS41OC44NCwxLjA4LDAsMS43Mi0uODcsMS43Mi0yLjA1cy0uNjQtMi4wNi0xLjcyLTIuMDZjLS42NSwwLTEuMy40LTEuNTguODZ2Mi40MVoiLz4KICAgIDxwYXRoIGNsYXNzPSJjbHMtMiIgZD0iTTQ5LjE0LDczLjR2LTUuMzFoLjgzdi44NmMuNDMtLjU2LDEuMDQtLjk3LDEuNzctLjk3di44NWMtLjEtLjAyLS4yLS4wMy0uMzMtLjAzLS41MSwwLTEuMi40Mi0xLjQ0Ljg1djMuNzZoLS44M1oiLz4KICAgIDxwYXRoIGNsYXNzPSJjbHMtMiIgZD0iTTUyLjYyLDY2LjYzYzAtLjMxLjI1LS41NS41NS0uNTVzLjU2LjI0LjU2LjU1LS4yNS41Ni0uNTYuNTYtLjU1LS4yNS0uNTUtLjU2Wk01Mi43Nyw3My40di01LjMxaC44M3Y1LjMxaC0uODNaIi8+CiAgICA8cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik01Ny41OCw2Ny45NWMuOTcsMCwxLjU0LjQsMS45NS45MmwtLjU1LjUxYy0uMzUtLjQ4LS44LS42OS0xLjM1LS42OS0xLjEzLDAtMS44NC44Ny0xLjg0LDIuMDVzLjcsMi4wNiwxLjg0LDIuMDZjLjU1LDAsMS0uMjIsMS4zNS0uNjlsLjU1LjUxYy0uNDEuNTMtLjk4LjkyLTEuOTUuOTItMS41OCwwLTIuNjUtMS4yMS0yLjY1LTIuNzlzMS4wNy0yLjc4LDIuNjUtMi43OFoiLz4KICA8L2c+CiAgPGc+CiAgICA8Y2lyY2xlIGNsYXNzPSJjbHMtMSIgY3g9IjQ4LjM5IiBjeT0iMjUiIHI9IjIwIi8+CiAgICA8Zz4KICAgICAgPGNpcmNsZSBjbGFzcz0iY2xzLTUiIGN4PSI0MC40MiIgY3k9IjM0LjQzIiByPSIyLjkxIi8+CiAgICAgIDxjaXJjbGUgY2xhc3M9ImNscy01IiBjeD0iMzYuMyIgY3k9IjI1LjAxIiByPSIyLjkxIi8+CiAgICAgIDxjaXJjbGUgY2xhc3M9ImNscy01IiBjeD0iNDAuNDIiIGN5PSIxNS41NyIgcj0iMi45MSIvPgogICAgICA8bGluZSBjbGFzcz0iY2xzLTMiIHgxPSI0Mi40OSIgeTE9IjMyLjM5IiB4Mj0iNDYuMDMiIHkyPSIyOC44NCIvPgogICAgICA8bGluZSBjbGFzcz0iY2xzLTMiIHgxPSI0Mi40OSIgeTE9IjE3LjYyIiB4Mj0iNDYuMDQiIHkyPSIyMS4xNyIvPgogICAgICA8bGluZSBjbGFzcz0iY2xzLTMiIHgxPSIzOS4yNCIgeTE9IjI1LjAxIiB4Mj0iNDQuNDIiIHkyPSIyNS4wMSIvPgogICAgICA8cG9seWxpbmUgY2xhc3M9ImNscy00IiBwb2ludHM9IjUyLjMxIDI0LjgyIDYzLjM5IDI0LjgyIDYwLjI1IDI3Ljk2Ii8+CiAgICAgIDxjaXJjbGUgY2xhc3M9ImNscy01IiBjeD0iNDkuOTEiIGN5PSIyNS4wMSIgcj0iNS40NSIvPgogICAgICA8bGluZSBjbGFzcz0iY2xzLTMiIHgxPSI2MC4yNSIgeTE9IjIxLjYiIHgyPSI2My4zOSIgeTI9IjI0Ljc0Ii8+CiAgICA8L2c+CiAgPC9nPgo8L3N2Zz4=" | +.spec.icon[0].mediatype = "image/svg+xml" +' "$CSV_FILE" + +echo "Added certification annotations and architecture labels to $CSV_FILE" echo "Bundle updates applied successfully!" diff --git a/operators/scripts/update-ngf-img-version.sh b/operators/scripts/update-ngf-img-version.sh index 97abacd932..ff8f2e0d9c 100755 --- a/operators/scripts/update-ngf-img-version.sh +++ b/operators/scripts/update-ngf-img-version.sh @@ -2,7 +2,7 @@ set -e # Get NGF version from Chart.yaml -NGF_VERSION=$(grep "^appVersion:" ../charts/nginx-gateway-fabric/Chart.yaml | sed 's/appVersion: *//g' | tr -d '"') +NGF_VERSION=$(grep "^appVersion:" ../charts/nginx-gateway-fabric/Chart.yaml | sed 's/appVersion: *//g' | tr -d '"')-ubi echo "Using NGF version: $NGF_VERSION"