5353 - uses : dawidd6/action-download-artifact@1f8785ff7a5130826f848e7f72725c85d241860f
5454 with :
5555 name : olm
56- workflow : main .yaml
56+ workflow : release .yaml
5757 github_token : ${{ secrets.VM_BOT_GH_TOKEN }}
5858 run_id : ${{ github.event.workflow_run.id }}
5959 path : bundle
@@ -71,45 +71,42 @@ jobs:
7171 run : |
7272 if [ ! -d bundle ]; then
7373 echo "No bundle directory found"
74- exit 1;
74+ exit 1
7575 fi
76- CATALOGS_DIR=__operatorhub-repo/catalogs
77- NEW_VERSION=$(ls bundle | head -1)
78- CATALOG_FILE=${CATALOGS_DIR}/latest/victoriametrics-operator/catalog.yaml
79- mkdir -p ${CATALOGS_DIR}/latest/victoriametrics-operator
8076
81- # Save existing catalog as PREV_CATALOG before overwriting
82- if [ -f "${CATALOG_FILE}" ]; then
83- cp "${CATALOG_FILE}" /tmp/vm-prev-catalog.yaml
84- PREV_CATALOG=/tmp/vm-prev-catalog.yaml
85- fi
77+ export OPERATOR_NAME="victoriametrics-operator"
78+ export OPERATOR_DIR=__operatorhub-repo/operators/${OPERATOR_NAME}
79+ mkdir -p ${OPERATOR_DIR}
8680
87- PREVIOUS_VERSION=$(yq 'select(.schema == "olm.channel") | .entries[0].name' \
88- ${PREV_CATALOG} 2>/dev/null || true)
81+ NEW_VERSION=$(ls bundle | head -1)
82+ export OLD_VERSION=$(find ${OPERATOR_DIR}/* ! -path "*/catalog-templates" -maxdepth 0 -type d -exec basename {} \; | sort -V -r | head -1)
83+ export OLD_ENTRY="${OPERATOR_NAME}.v${OLD_VERSION}"
8984
90- opm render bundle/${NEW_VERSION} --output=yaml > /tmp/vm-bundle-rendered.yaml
91- yq 'select(.schema == "olm.package")' "${PREV_CATALOG}" > /tmp/vm-catalog-header.yaml
92- echo "---" >> /tmp/vm-catalog-header.yaml
93- yq '.entries[] | select(.schema == "olm.channel")' \
94- bundle/${NEW_VERSION}/catalog-templates/latest.yaml >> /tmp/vm-catalog-header.yaml
85+ if [ ! -z $OLD_VERSION ]; then
86+ export MANIFEST_PATH=bundle/${NEW_VERSION}/manifests/victoriametrics-operator.clusterserviceversion.yaml
87+ yq -i '.spec.replaces = "victoriametrics-operator.v" + strenv(OLD_VERSION)' $MANIFEST_PATH
88+ fi
9589
96- # Include previous bundles from PREV_CATALOG (excludes current version to avoid duplicates)
97- yq "select(.schema == \"olm.bundle\" and .name != \"victoriametrics-operator.v${NEW_VERSION}\")" \
98- "${PREV_CATALOG}" > /tmp/vm-prev-bundles. yaml
99- yq eval-all '.' /tmp/vm-catalog-header.yaml /tmp/vm -bundle-rendered .yaml /tmp/vm-prev-bundles.yaml > ${CATALOG_FILE}
90+ mv bundle/${NEW_VERSION} ${OPERATOR_DIR}/
91+ if [ -f ${OPERATOR_DIR}/Makefile ]; then
92+ opm render ${OPERATOR_DIR}/${NEW_VERSION} --output= yaml \
93+ | yq 'select(.schema == "olm.bundle")' > /tmp/new -bundle.yaml
10094
101- if [ -n "${PREVIOUS_VERSION}" ]; then
102- yq -i '(select(.schema == "olm.channel") | .entries[0]).replaces = strenv(PREVIOUS_VERSION)' ${CATALOG_FILE}
95+ for TEMPLATE in ${OPERATOR_DIR}/catalog-templates/*.yaml; do
96+ PREV_HEAD=$(yq '.entries[] | select(.schema == "olm.channel") | .entries[-1].name' "${TEMPLATE}")
97+ NEW_VERSION="${NEW_VERSION}" PREV_HEAD="${PREV_HEAD}" \
98+ yq -i '(.entries[] | select(.schema == "olm.channel") | .entries) += [{"name": "victoriametrics-operator.v" + strenv(NEW_VERSION), "replaces": strenv(PREV_HEAD)}]' "${TEMPLATE}"
99+ yq -i '.entries += [load("/tmp/new-bundle.yaml")]' "${TEMPLATE}"
100+ done
103101 fi
104- opm validate ${CATALOGS_DIR}/latest/victoriametrics-operator
105102
106- echo "VERSION=$NEW_VERSION" >> $GITHUB_OUTPUT
103+ echo "VERSION=${ NEW_VERSION} " >> $GITHUB_OUTPUT
107104
108105 - name : Create Pull Request
109106 if : ${{ steps.update.outputs.VERSION != '' }}
110107 uses : peter-evans/create-pull-request@c0f553fe549906ede9cf27b5156039d195d2ece0
111108 with :
112- add-paths : catalogs
109+ add-paths : operators/victoriametrics-operator
113110 commit-message : ' victoriametrics-operator: ${{ steps.update.outputs.VERSION }}'
114111 signoff : true
115112 committer : " Github Actions <${{ steps.import-gpg.outputs.email }}>"
0 commit comments