From eb1af92a0a3160f17c7dfb4861e626683ccfca86 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1=C5=A1=20Reme=C5=A1?= Date: Tue, 5 Nov 2024 13:40:41 +0100 Subject: [PATCH 1/3] Migrate to file based catalog --- build/build_opm_catalog.sh | 87 +++++++++++++++----------------------- olm/catalog.Dockerfile | 14 ++++++ 2 files changed, 49 insertions(+), 52 deletions(-) create mode 100644 olm/catalog.Dockerfile diff --git a/build/build_opm_catalog.sh b/build/build_opm_catalog.sh index b75b4bfe..7800f62f 100755 --- a/build/build_opm_catalog.sh +++ b/build/build_opm_catalog.sh @@ -12,8 +12,6 @@ DIR_MANIFESTS="" GOOS=$(go env GOOS) OPM_VERSION="v1.23.2" COMMAND_OPM="" -GRPCURL_VERSION="1.7.0" -COMMAND_GRPCURL="" export REGISTRY_AUTH_FILE=${CONTAINER_ENGINE_CONFIG_DIR}/config.json @@ -59,11 +57,6 @@ function download_dependencies() { chmod +x opm COMMAND_OPM="$DIR_EXEC/opm" - local grpcurl_url="https://github.com/fullstorydev/grpcurl/releases/download/v$GRPCURL_VERSION/grpcurl_${GRPCURL_VERSION}_${GOOS}_x86_64.tar.gz" - curl -sfL "$grpcurl_url" | tar -xz -O grpcurl > "grpcurl" - chmod +x grpcurl - COMMAND_GRPCURL="$DIR_EXEC/grpcurl" - cd ~- } @@ -146,50 +139,41 @@ function validate_opm_bundle() { } function build_opm_catalog() { - local FROM_INDEX="" - local PREV_COMMIT=${PREV_VERSION#*g} # remove versioning and the g commit hash prefix - # check if the previous catalog image is available - if [ "$(${CONTAINER_ENGINE} pull "${OLM_CATALOG_IMAGE}":"${PREV_COMMIT}" &> /dev/null; echo $?)" -eq 0 ]; then - FROM_INDEX="--from-index ${OLM_CATALOG_IMAGE}:${PREV_COMMIT}" - log "Index argument is $FROM_INDEX" - fi - - log "Creating catalog image $OLM_CATALOG_IMAGE_VERSION using opm" - - ${COMMAND_OPM} index add --bundles "$OLM_BUNDLE_IMAGE_VERSION" \ - --tag "$OLM_CATALOG_IMAGE_VERSION" \ - --build-tool "$(basename "$CONTAINER_ENGINE" | awk '{print $1}')" \ - $FROM_INDEX -} - -function validate_opm_catalog() { - log "Checking that catalog we have built returns the correct version $OPERATOR_VERSION" - - local free_port="" - local container_id="" - local catalog_current_version="" - - free_port=$(python3 -c 'import socket; s=socket.socket(); s.bind(("", 0)); print(s.getsockname()[1]); s.close()') - - log "Running $OLM_CATALOG_IMAGE_VERSION and exposing $free_port" - container_id=$(${CONTAINER_ENGINE} run -d -p "$free_port:50051" "$OLM_CATALOG_IMAGE_VERSION") - - log "Getting current version from running catalog" - catalog_current_version=$( - ${COMMAND_GRPCURL} -plaintext -d '{"name": "'"$OPERATOR_NAME"'"}' \ - "localhost:$free_port" api.Registry/GetPackage | \ - jq -r '.channels[] | select(.name=="'"$OLM_CHANNEL"'") | .csvName' | \ - sed "s/$OPERATOR_NAME\.//" - ) - log " catalog version: $catalog_current_version" - - log "Removing docker container $container_id" - ${CONTAINER_ENGINE} rm -f "$container_id" - - if [[ "$catalog_current_version" != "v$OPERATOR_VERSION" ]]; then - log "Version from catalog $catalog_current_version != v$OPERATOR_VERSION" - return 1 - fi + log "Updating the catalog index" + cat << EOF > olm/deployment-validation-operator-index/catalog.yaml +--- +defaultChannel: alpha +name: deployment-validation-operator +schema: olm.package +--- +schema: olm.channel +package: deployment-validation-operator +name: alpha +entries: +- name: deployment-validation-operator.${OPERATOR_VERSION} + skipRange: ">=0.0.1 <${OPERATOR_VERSION}" +--- +image: ${OLM_BUNDLE_IMAGE_VERSION} +name: deployment-validation-operator.${OPERATOR_VERSION} +package: deployment-validation-operator +properties: +- type: olm.package + value: + packageName: deployment-validation-operator + version: ${OPERATOR_VERSION} +relatedImages: +- image: quay.io/app-sre/deployment-validation-operator:${OPERATOR_VERSION} + name: "" +schema: olm.bundle +EOF + + cat olm/deployment-validation-operator-index/catalog.yaml + + log "Validating the catalog" + ${COMMAND_OPM} validate olm/deployment-validation-operator-index + + log "Building the catalog image" + ${CONTAINER_ENGINE} build -f olm/catalog.Dockerfile -t ${OLM_CATALOG_IMAGE_VERSION} } function update_versions_repo() { @@ -238,7 +222,6 @@ function main() { validate_opm_bundle build_opm_catalog - validate_opm_catalog if [[ -n "${APP_SRE_BOT_PUSH_TOKEN:-}" ]]; then update_versions_repo diff --git a/olm/catalog.Dockerfile b/olm/catalog.Dockerfile new file mode 100644 index 00000000..5e0335b7 --- /dev/null +++ b/olm/catalog.Dockerfile @@ -0,0 +1,14 @@ +# The builder image is expected to contain +# /bin/opm (with serve subcommand) +FROM quay.io/operator-framework/opm:latest + +# Configure the entrypoint and command +ENTRYPOINT ["/bin/opm"] +CMD ["serve", "/configs", "--cache-dir=/tmp/cache"] + +# Copy FBC root into image at /configs and pre-populate serve cache +ADD deployment-validation-operator-index /configs + +# Set FBC-specific label for the location of the FBC root directory +# in the image +LABEL operators.operatorframework.io.index.configs.v1=/configs From 39b46273fed4e9bb711d996e04efc7d31e5b0478 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1=C5=A1=20Reme=C5=A1?= Date: Fri, 22 Nov 2024 15:21:41 +0100 Subject: [PATCH 2/3] update --- build/build_opm_catalog.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/build/build_opm_catalog.sh b/build/build_opm_catalog.sh index 7800f62f..a1aa4646 100755 --- a/build/build_opm_catalog.sh +++ b/build/build_opm_catalog.sh @@ -140,6 +140,7 @@ function validate_opm_bundle() { function build_opm_catalog() { log "Updating the catalog index" + mkdir olm/deployment-validation-operator-index cat << EOF > olm/deployment-validation-operator-index/catalog.yaml --- defaultChannel: alpha @@ -162,7 +163,7 @@ properties: packageName: deployment-validation-operator version: ${OPERATOR_VERSION} relatedImages: -- image: quay.io/app-sre/deployment-validation-operator:${OPERATOR_VERSION} +- image: ${OPERATOR_IMAGE}:${OPERATOR_IMAGE_TAG} name: "" schema: olm.bundle EOF From df6241aa73d0ad40bb666d33a4eb4d547cecd885 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1=C5=A1=20Reme=C5=A1?= Date: Mon, 25 Nov 2024 12:53:02 +0100 Subject: [PATCH 3/3] add opm render command --- build/build_opm_catalog.sh | 20 +++++--------------- 1 file changed, 5 insertions(+), 15 deletions(-) diff --git a/build/build_opm_catalog.sh b/build/build_opm_catalog.sh index a1aa4646..8754405d 100755 --- a/build/build_opm_catalog.sh +++ b/build/build_opm_catalog.sh @@ -141,7 +141,10 @@ function validate_opm_bundle() { function build_opm_catalog() { log "Updating the catalog index" mkdir olm/deployment-validation-operator-index - cat << EOF > olm/deployment-validation-operator-index/catalog.yaml + + ${COMMAND_OPM} render ${OLM_BUNDLE_IMAGE_VERSION} -o yaml >> olm/deployment-validation-operator-index/catalog.yaml + + cat << EOF >> olm/deployment-validation-operator-index/catalog.yaml --- defaultChannel: alpha name: deployment-validation-operator @@ -151,21 +154,8 @@ schema: olm.channel package: deployment-validation-operator name: alpha entries: -- name: deployment-validation-operator.${OPERATOR_VERSION} +- name: deployment-validation-operator.v${OPERATOR_VERSION} skipRange: ">=0.0.1 <${OPERATOR_VERSION}" ---- -image: ${OLM_BUNDLE_IMAGE_VERSION} -name: deployment-validation-operator.${OPERATOR_VERSION} -package: deployment-validation-operator -properties: -- type: olm.package - value: - packageName: deployment-validation-operator - version: ${OPERATOR_VERSION} -relatedImages: -- image: ${OPERATOR_IMAGE}:${OPERATOR_IMAGE_TAG} - name: "" -schema: olm.bundle EOF cat olm/deployment-validation-operator-index/catalog.yaml