Process FBC Fragment #1108
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Process FBC Fragment | |
| run-name: Process FBC Fragment | |
| on: | |
| workflow_dispatch: | |
| push: | |
| paths: | |
| - catalog/catalog-patch.yaml | |
| branches: | |
| - 'main' | |
| permissions: | |
| contents: write | |
| env: | |
| GITHUB_ORG: opendatahub-io | |
| GITHUB_RKA_ORG: red-hat-data-services | |
| jobs: | |
| process-fbc: | |
| runs-on: ubuntu-latest | |
| container: | |
| image: quay.io/rhoai/rhoai-task-toolset:latest | |
| options: --privileged | |
| steps: | |
| - name: Get Current branch name | |
| shell: bash | |
| run: echo "branch=${GITHUB_HEAD_REF:-${GITHUB_REF#refs/heads/}}" >> $GITHUB_OUTPUT | |
| id: get_branch | |
| - name: Git checkout build config | |
| uses: actions/checkout@v4 | |
| with: | |
| ref: ${{ steps.get_branch.outputs.branch }} | |
| path: ${{ steps.get_branch.outputs.branch }} | |
| - name: Git checkout utils | |
| uses: actions/checkout@v4 | |
| with: | |
| repository: ${{ env.GITHUB_RKA_ORG }}/RHOAI-Konflux-Automation | |
| ref: 'odh' | |
| path: utils | |
| - name: Install dependencies | |
| env: | |
| OPENDATAHUB_QUAY_RO_USERNAME: ${{ secrets.OPENDATAHUB_QUAY_RO_USERNAME }} | |
| OPENDATAHUB_QUAY_RO_TOKEN: ${{ secrets.OPENDATAHUB_QUAY_RO_TOKEN }} | |
| run: | | |
| os="$(uname -s | tr '[:upper:]' '[:lower:]')" | |
| arch="$(uname -m | sed 's/x86_64/amd64/')" | |
| yq_version="v4.44.3" | |
| yq_filename="yq-$yq_version" | |
| echo "-> Downloading yq" >&2 | |
| curl -sSfLo "$yq_filename" "https://github.com/mikefarah/yq/releases/download/$yq_version/yq_${os}_${arch}" | |
| chmod +x $yq_filename | |
| ln -s $yq_filename yq | |
| cp $yq_filename /usr/local/bin/yq | |
| opm_version="v1.47.0" | |
| opm_filename="opm-$opm_version" | |
| echo "-> Downloading opm" >&2 | |
| curl -sSfLo "$opm_filename" "https://github.com/operator-framework/operator-registry/releases/download/$opm_version/$os-$arch-opm" | |
| chmod +x "$opm_filename" | |
| ln -fs "$opm_filename" opm | |
| cp "$opm_filename" /usr/local/bin/opm | |
| pip install --default-timeout=100 -r utils/utils/fbc-processor/requirements.txt | |
| microdnf install -y skopeo && \ | |
| microdnf clean all && rm -rf /var/cache/dnf/* | |
| skopeo login -u "${OPENDATAHUB_QUAY_RO_USERNAME}" -p "${OPENDATAHUB_QUAY_RO_TOKEN}" quay.io/rhoai | |
| - name: Process FBC Fragment | |
| env: | |
| BRANCH: ${{ steps.get_branch.outputs.branch }} | |
| OPENDATAHUB_QUAY_RO_USERNAME: ${{ secrets.OPENDATAHUB_QUAY_RO_USERNAME }} | |
| OPENDATAHUB_QUAY_RO_TOKEN: ${{ secrets.OPENDATAHUB_QUAY_RO_TOKEN }} | |
| OPENDATAHUB_QUAY_API_TOKEN: ${{ secrets.OPENDATAHUB_QUAY_API_TOKEN }} | |
| run: | | |
| #Declare basic variables | |
| BUILD_CONFIG_PATH=${BRANCH}/config/build-config.yaml | |
| OPERATOR_BUNDLE_COMPONENT_NAME=opendatahub-operator-bundle | |
| PATCH_YAML_PATH=${BRANCH}/catalog/catalog-patch.yaml | |
| OPERATOR_BUNDLE_IMAGE_NAME=RELATED_IMAGE_OPENDATAHUB_OPERATOR_BUNDLE_IMAGE | |
| echo "OPERATOR_BUNDLE_IMAGE_NAME = $OPERATOR_BUNDLE_IMAGE_NAME" | |
| #Generate the catalog for the latest bundle | |
| #podman login quay.io -u ${QUAY_RO_USERNAME} -p ${QUAY_RO_TOKEN} | |
| BASE64_AUTH=$(echo -n "${OPENDATAHUB_QUAY_RO_USERNAME}:${OPENDATAHUB_QUAY_RO_TOKEN}" | base64 -w 0) | |
| DOCKER_AUTH_DIR=${HOME} | |
| mkdir ${DOCKER_AUTH_DIR}/.docker | |
| echo '{"auths":{"quay.io/opendatahub/odh-operator-bundle":{"username":"'"${OPENDATAHUB_QUAY_RO_USERNAME}"'","password":"'"${OPENDATAHUB_QUAY_RO_TOKEN}"'","email":"","auth":"'"${BASE64_AUTH}"'"}}}' > ${DOCKER_AUTH_DIR}/.docker/config.json | |
| #Invoke the FBC processor to extract the snapshot images | |
| CATALOG_BUILD_ARGS_FILE_PATH=${BRANCH}/catalog/catalog_build_args.map | |
| python3 utils/utils/fbc-processor/fbc-processor.py -op extract-snapshot-images -o utils/snapshot_images.json -v ${BRANCH} -q odh-stable -f ${OPERATOR_BUNDLE_COMPONENT_NAME} -b ${BUILD_CONFIG_PATH} --catalog-build-args-file-path ${CATALOG_BUILD_ARGS_FILE_PATH} | |
| LATEST_BUNDLE_IMAGE=$(jq --arg OPERATOR_BUNDLE_IMAGE_NAME "$OPERATOR_BUNDLE_IMAGE_NAME" -r '.[] | select(.name == $OPERATOR_BUNDLE_IMAGE_NAME) | .value' utils/snapshot_images.json) | |
| echo "LATEST_BUNDLE_IMAGE = $LATEST_BUNDLE_IMAGE" | |
| yq e -i '.stable.bundles[0].image = "$LATEST_BUNDLE_IMAGE"' utils/utils/fbc-processor/fbc-semver-template.yaml | |
| LATEST_BUNDLE_IMAGE="$LATEST_BUNDLE_IMAGE" yq e -i '.stable.bundles[0].image = env(LATEST_BUNDLE_IMAGE)' utils/utils/fbc-processor/fbc-semver-template.yaml | |
| #Generate the single bundle catalog === sbc | |
| CSV_META_MIN_OCP_VERSION=420 | |
| WORK_DIR=utils/utils/fbc | |
| mkdir -p ${WORK_DIR} | |
| BUNDLE_OBJECT_SINGLE_BUNDLE_PATH=${WORK_DIR}/bundle_object_sbc_semver.yaml | |
| CSV_META_SINGLE_BUNDLE_PATH=${WORK_DIR}/csv_meta_sbc_semver.yaml | |
| CSV_META_OPM_FLAG="--migrate-level=bundle-object-to-csv-metadata" | |
| DOCKER_CONFIG=${DOCKER_AUTH_DIR}/.docker/ opm alpha render-template semver -o yaml utils/utils/fbc-processor/fbc-semver-template.yaml > ${BUNDLE_OBJECT_SINGLE_BUNDLE_PATH} | |
| DOCKER_CONFIG=${DOCKER_AUTH_DIR}/.docker/ opm alpha render-template semver ${CSV_META_OPM_FLAG} -o yaml utils/utils/fbc-processor/fbc-semver-template.yaml > ${CSV_META_SINGLE_BUNDLE_PATH} | |
| PUSH_PIPELINE_PATH=${BRANCH}/.tekton/odh-fbc-fragment-ci-push.yaml | |
| OPENSHIFT_VERSION="v4.20" | |
| NUMERIC_OCP_VERSION=${OPENSHIFT_VERSION/v4./4} | |
| echo "OPENSHIFT_VERSION=$OPENSHIFT_VERSION" | |
| OUTPUT_CATALOG_PATH=${BRANCH}/catalog/${OPENSHIFT_VERSION}/rhods-operator/catalog.yaml | |
| PCC_CATALOG_YAML_PATH=${BRANCH}/pcc/catalog-${OPENSHIFT_VERSION}.yaml | |
| SINGLE_BUNDLE_PATH=${BUNDLE_OBJECT_SINGLE_BUNDLE_PATH} | |
| if [[ $NUMERIC_OCP_VERSION -ge $CSV_META_MIN_OCP_VERSION ]]; then SINGLE_BUNDLE_PATH=${CSV_META_SINGLE_BUNDLE_PATH}; fi | |
| python3 utils/utils/fbc-processor/fbc-processor.py -op catalog-patch -b ${BUILD_CONFIG_PATH} -c ${PCC_CATALOG_YAML_PATH} -p ${PATCH_YAML_PATH} -s ${SINGLE_BUNDLE_PATH} -o ${OUTPUT_CATALOG_PATH} --push-pipeline-yaml-path ${PUSH_PIPELINE_PATH} --push-pipeline-operation enable | |
| cat ${OUTPUT_CATALOG_PATH} | |
| - name: Commit and push the changes to release branch | |
| uses: actions-js/push@master | |
| with: | |
| github_token: ${{ secrets.GITHUB_TOKEN }} | |
| branch: ${{ steps.get_branch.outputs.branch }} | |
| message: "Updating the catalog.yaml with latest images and patches" | |
| repository: ${{ env.GITHUB_ORG }}/ODH-Build-Config | |
| directory: ${{ steps.get_branch.outputs.branch }} | |
| author_name: Openshift-AI DevOps | |
| author_email: openshift-ai-devops@redhat.com | |