From c71498a17c85e4114facc537f5330d5b32ed8f66 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` 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 +++++++++ build/csv/csv-gen.sh | 16 +++++++++------- deploy/olm/assemble/metadata-common.yaml | 2 +- 7 files changed, 63 insertions(+), 8 deletions(-) create mode 100644 Dockerfile.bundle create mode 100644 build/bundle/annotations.yaml create mode 100755 build/bundle/gen-bundle.sh diff --git a/Dockerfile.bundle b/Dockerfile.bundle new file mode 100644 index 0000000000000..30fbb1adc42b9 --- /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 140093b5ffd4c..c4acf2290cbfb 100644 --- a/Makefile +++ b/Makefile @@ -189,6 +189,10 @@ csv: export NO_OB_OBC_VOL_GEN=true 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 0000000000000..1d626e5c76acc --- /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 0000000000000..3fdaa4c7ab06b --- /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 719c2de969f85..57c7285bd5eb1 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/csv-gen.sh b/build/csv/csv-gen.sh index cab017e01dc4b..3589c9ca38310 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 d590491a3d1dd..87219749f14c3 100644 --- a/deploy/olm/assemble/metadata-common.yaml +++ b/deploy/olm/assemble/metadata-common.yaml @@ -243,7 +243,7 @@ metadata: annotations: tectonic-visibility: ocs repository: https://github.com/rook/rook - containerImage: "{{.RookOperatorImage}}" + containerImage: rook/ceph:master alm-examples: |- [ {