From 50cce657dc94be625fe96a7399d2c5402fd91dd2 Mon Sep 17 00:00:00 2001 From: Nikhil-Ladha Date: Mon, 4 Mar 2024 13:44:02 +0530 Subject: [PATCH] build: added new rook bundle creation script Added Dockerfile to create rook-ceph-operator-bundle under the rook repo. Updated the Makefile to have the 'bundle' command, that reference the 'gen-bundle.sh' script under `build/bundle`. Moved the rook csv under build/csv/ceph directory to keep all the manifests at one location for bundle creation Signed-off-by: Nikhil-Ladha --- Dockerfile.bundle | 13 ++++++++++++ Makefile | 4 ++++ build/bundle/annotations.yaml | 6 ++++++ build/bundle/gen-bundle.sh | 21 +++++++++++++++++++ build/common.sh | 9 ++++++++ ...-ceph-operator.clusterserviceversion.yaml} | 8 +++---- build/csv/csv-gen.sh | 16 +++++++------- deploy/olm/assemble/metadata-common.yaml | 2 +- 8 files changed, 67 insertions(+), 12 deletions(-) create mode 100644 Dockerfile.bundle create mode 100644 build/bundle/annotations.yaml create mode 100755 build/bundle/gen-bundle.sh rename build/csv/{rook-ceph.clusterserviceversion.yaml => ceph/rook-ceph-operator.clusterserviceversion.yaml} (99%) diff --git a/Dockerfile.bundle b/Dockerfile.bundle new file mode 100644 index 000000000000..30fbb1adc42b --- /dev/null +++ b/Dockerfile.bundle @@ -0,0 +1,13 @@ +FROM scratch + +# Core bundle labels. +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=rook-ceph-operator +LABEL operators.operatorframework.io.bundle.channels.v1=alpha +LABEL operators.operatorframework.io.bundle.channel.default.v1=alpha + +# Copy files to locations specified by labels. +COPY build/csv/ceph /manifests/ +COPY build/bundle/annotations.yaml /metadata/ diff --git a/Makefile b/Makefile index 574a585aed8f..5d310ea4ff5c 100644 --- a/Makefile +++ b/Makefile @@ -184,6 +184,10 @@ gen-csv: export NO_OB_OBC_VOL_GEN=true gen-csv: csv-clean crds ## Generate a CSV file for OLM. $(MAKE) -C images/ceph csv +bundle: + @echo generate rook bundle + @build/bundle/gen-bundle.sh + csv-clean: ## Remove existing OLM files. @$(MAKE) -C images/ceph csv-clean diff --git a/build/bundle/annotations.yaml b/build/bundle/annotations.yaml new file mode 100644 index 000000000000..1d626e5c76ac --- /dev/null +++ b/build/bundle/annotations.yaml @@ -0,0 +1,6 @@ +annotations: + operators.operatorframework.io.bundle.mediatype.v1: registry+v1 + operators.operatorframework.io.bundle.manifests.v1: manifests/ + operators.operatorframework.io.bundle.metadata.v1: metadata/ + operators.operatorframework.io.bundle.package.v1: rook-ceph-operator + operators.operatorframework.io.bundle.channels.v1: alpha diff --git a/build/bundle/gen-bundle.sh b/build/bundle/gen-bundle.sh new file mode 100755 index 000000000000..3fdaa4c7ab06 --- /dev/null +++ b/build/bundle/gen-bundle.sh @@ -0,0 +1,21 @@ +#!/usr/bin/env bash +set -e + +source "build/common.sh" + +# Use the available container management tool +if [ -z "$DOCKERCMD" ]; then + DOCKERCMD=$(command -v docker || echo "") +fi +if [ -z "$DOCKERCMD" ]; then + DOCKERCMD=$(command -v podman || echo "") +fi + +if [ -z "$DOCKERCMD" ]; then + echo -e '\033[1;31m' "podman or docker not found on system" '\033[0m' + exit 1 +fi + +${DOCKERCMD} build --platform="${GOOS}"/"${GOARCH}" --no-cache -t "$BUNDLE_IMAGE" -f Dockerfile.bundle . +echo +echo "Run '${DOCKERCMD} push ${BUNDLE_IMAGE}' to push operator bundle to image registry." diff --git a/build/common.sh b/build/common.sh index 719c2de969f8..57c7285bd5eb 100644 --- a/build/common.sh +++ b/build/common.sh @@ -24,6 +24,15 @@ scriptdir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" export OUTPUT_DIR=${BUILD_ROOT}/_output export WORK_DIR=${BUILD_ROOT}/.work export CACHE_DIR=${BUILD_ROOT}/.cache +export GOOS +GOOS=$(go env GOOS) +export GOARCH +GOARCH=$(go env GOARCH) +DEFAULT_CSV_VERSION="4.15.0" +CSV_VERSION="${CSV_VERSION:-${DEFAULT_CSV_VERSION}}" +export ROOK_IMAGE="docker.io/rook/ceph:v1.13.0.399.g9c0d795e2" +DEFAULT_BUNDLE_IMAGE=rook/rook-ceph-operator-bundle:"${VERSION}" +BUNDLE_IMAGE="${BUNDLE_IMAGE:-${DEFAULT_BUNDLE_IMAGE}}" function ver() { local full_ver maj min bug build diff --git a/build/csv/rook-ceph.clusterserviceversion.yaml b/build/csv/ceph/rook-ceph-operator.clusterserviceversion.yaml similarity index 99% rename from build/csv/rook-ceph.clusterserviceversion.yaml rename to build/csv/ceph/rook-ceph-operator.clusterserviceversion.yaml index b39e47e6a496..055a64898576 100644 --- a/build/csv/rook-ceph.clusterserviceversion.yaml +++ b/build/csv/ceph/rook-ceph-operator.clusterserviceversion.yaml @@ -201,7 +201,7 @@ metadata: operators.operatorframework.io/project_layout: unknown tectonic-visibility: ocs repository: https://github.com/red-hat-storage/rook - containerImage: '{{.RookOperatorImage}}' + containerImage: docker.io/rook/ceph:v1.13.0.399.g9c0d795e2 externalClusterScript: |- IiIiCkNvcHlyaWdodCAyMDIwIFRoZSBSb29rIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu CgpMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxp @@ -1860,7 +1860,7 @@ metadata: OgogICAgICAgIHByaW50KGYiS2V5RXJyb3I6IHtrRXJyfSIpCiAgICBleGNlcHQgT1NFcnJvciBh cyBvc0VycjoKICAgICAgICBwcmludChmIkVycm9yIHdoaWxlIHRyeWluZyB0byBvdXRwdXQgdGhl IGRhdGE6IHtvc0Vycn0iKQogICAgZmluYWxseToKICAgICAgICByak9iai5zaHV0ZG93bigpCg== - name: rook-ceph.v{{.RookOperatorCsvVersion}} + name: rook-ceph-operator.v4.15.0 namespace: placeholder relatedImages: - image: docker.io/rook/ceph:master @@ -3034,7 +3034,7 @@ spec: fieldPath: metadata.namespace - name: ROOK_OBC_WATCH_OPERATOR_NAMESPACE value: "true" - image: {{.RookOperatorImage}} + image: docker.io/rook/ceph:v1.13.0.399.g9c0d795e2 name: rook-ceph-operator resources: {} securityContext: @@ -3374,5 +3374,5 @@ spec: provider: name: Provider Name url: https://your.domain - version: {{.RookOperatorCsvVersion}} + version: 4.15.0 minKubeVersion: 1.16.0 diff --git a/build/csv/csv-gen.sh b/build/csv/csv-gen.sh index cab017e01dc4..3589c9ca3831 100755 --- a/build/csv/csv-gen.sh +++ b/build/csv/csv-gen.sh @@ -1,6 +1,8 @@ #!/usr/bin/env bash set -e +source "../../build/common.sh" + ############# # VARIABLES # ############# @@ -13,7 +15,7 @@ YQ_CMD_DELETE=("$yq" delete -i) YQ_CMD_MERGE_OVERWRITE=("$yq" merge --inplace --overwrite --prettyPrint) YQ_CMD_MERGE=("$yq" merge --arrays=append --inplace) YQ_CMD_WRITE=("$yq" write --inplace -P) -CSV_FILE_NAME="../../build/csv/ceph/$PLATFORM/manifests/rook-ceph.clusterserviceversion.yaml" +CSV_FILE_NAME="../../build/csv/ceph/$PLATFORM/manifests/rook-ceph-operator.clusterserviceversion.yaml" CEPH_EXTERNAL_SCRIPT_FILE="../../deploy/examples/create-external-cluster-resources.py" ASSEMBLE_FILE_COMMON="../../deploy/olm/assemble/metadata-common.yaml" ASSEMBLE_FILE_OCP="../../deploy/olm/assemble/metadata-ocp.yaml" @@ -23,7 +25,7 @@ ASSEMBLE_FILE_OCP="../../deploy/olm/assemble/metadata-ocp.yaml" ############# function generate_csv() { - kubectl kustomize ../../deploy/examples/ | "$operator_sdk" generate bundle --package="rook-ceph" --output-dir="../../build/csv/ceph/$PLATFORM" --extra-service-accounts=rook-ceph-default,rook-csi-rbd-provisioner-sa,rook-csi-rbd-plugin-sa,rook-csi-cephfs-provisioner-sa,rook-csi-nfs-provisioner-sa,rook-csi-nfs-plugin-sa,rook-csi-cephfs-plugin-sa,rook-ceph-system,rook-ceph-rgw,rook-ceph-purge-osd,rook-ceph-osd,rook-ceph-mgr,rook-ceph-cmd-reporter + kubectl kustomize ../../deploy/examples/ | "$operator_sdk" generate bundle --package="rook-ceph-operator" --output-dir="../../build/csv/ceph/$PLATFORM" --extra-service-accounts=rook-ceph-default,rook-csi-rbd-provisioner-sa,rook-csi-rbd-plugin-sa,rook-csi-cephfs-provisioner-sa,rook-csi-nfs-provisioner-sa,rook-csi-nfs-plugin-sa,rook-csi-cephfs-plugin-sa,rook-ceph-system,rook-ceph-rgw,rook-ceph-purge-osd,rook-ceph-osd,rook-ceph-mgr,rook-ceph-cmd-reporter # cleanup to get the expected state before merging the real data from assembles "${YQ_CMD_DELETE[@]}" "$CSV_FILE_NAME" 'spec.icon[*]' @@ -33,7 +35,7 @@ function generate_csv() { "${YQ_CMD_MERGE_OVERWRITE[@]}" "$CSV_FILE_NAME" "$ASSEMBLE_FILE_COMMON" "${YQ_CMD_WRITE[@]}" "$CSV_FILE_NAME" metadata.annotations.externalClusterScript "$(base64 <$CEPH_EXTERNAL_SCRIPT_FILE)" - "${YQ_CMD_WRITE[@]}" "$CSV_FILE_NAME" metadata.name "rook-ceph.v${VERSION}" + "${YQ_CMD_WRITE[@]}" "$CSV_FILE_NAME" metadata.name "rook-ceph-operator.v${CSV_VERSION}" "${YQ_CMD_MERGE[@]}" "$CSV_FILE_NAME" "$ASSEMBLE_FILE_OCP" @@ -47,11 +49,11 @@ function generate_csv() { return fi - sed -i 's/image: rook\/ceph:.*/image: {{.RookOperatorImage}}/g' "$CSV_FILE_NAME" - sed -i 's/name: rook-ceph.v.*/name: rook-ceph.v{{.RookOperatorCsvVersion}}/g' "$CSV_FILE_NAME" - sed -i 's/version: 0.0.0/version: {{.RookOperatorCsvVersion}}/g' "$CSV_FILE_NAME" + sed -i "s|containerImage: rook/ceph:.*|containerImage: $ROOK_IMAGE|" "$CSV_FILE_NAME" + sed -i "s|image: rook/ceph:.*|image: $ROOK_IMAGE|" "$CSV_FILE_NAME" + sed -i "s/name: rook-ceph.v.*/name: rook-ceph-operator.v$CSV_VERSION/g" "$CSV_FILE_NAME" + sed -i "s/version: 0.0.0/version: $CSV_VERSION/g" "$CSV_FILE_NAME" - mv "$CSV_FILE_NAME" "../../build/csv/" mv "../../build/csv/ceph/$PLATFORM/manifests/"* "../../build/csv/ceph/" rm -rf "../../build/csv/ceph/$PLATFORM" } diff --git a/deploy/olm/assemble/metadata-common.yaml b/deploy/olm/assemble/metadata-common.yaml index af4a42c22a93..03aa760c8ec8 100644 --- a/deploy/olm/assemble/metadata-common.yaml +++ b/deploy/olm/assemble/metadata-common.yaml @@ -233,7 +233,7 @@ metadata: annotations: tectonic-visibility: ocs repository: https://github.com/red-hat-storage/rook - containerImage: "{{.RookOperatorImage}}" + containerImage: rook/ceph:master alm-examples: |- [ {