Skip to content

Process FBC Fragment #1108

Process FBC Fragment

Process FBC Fragment #1108

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