From 68faaada82774a8fa67e63b65b30c90a04245a8a Mon Sep 17 00:00:00 2001 From: Brendan Shephard <59072170+bshephar@users.noreply.github.com> Date: Tue, 12 Nov 2024 11:12:39 +1000 Subject: [PATCH] Use ENABLE_WEBHOOKS ARG in Dockerfile (#58391) In an effort to reduce the computational load of our operators. We are disabling webhooks in the service operators by default. However, they are still required in CI for Kuttl tests to succeed. This change leverages the ENABLE_WEBHOOKS ARG added to the Dockerfile. As an example of this Dockerfile change, reference: https://github.com/openstack-k8s-operators/heat-operator/pull/466/files Signed-off-by: Brendan Shephard --- .../openstack-k8s-operators-build-commands.sh | 86 ++++++++++--------- 1 file changed, 46 insertions(+), 40 deletions(-) diff --git a/ci-operator/step-registry/openstack-k8s-operators/build/openstack-k8s-operators-build-commands.sh b/ci-operator/step-registry/openstack-k8s-operators/build/openstack-k8s-operators-build-commands.sh index 1372da5c2dcc1..d939a219b6c53 100644 --- a/ci-operator/step-registry/openstack-k8s-operators/build/openstack-k8s-operators-build-commands.sh +++ b/ci-operator/step-registry/openstack-k8s-operators/build/openstack-k8s-operators-build-commands.sh @@ -20,33 +20,33 @@ PROW_BUILD=$(echo ${JOB_SPEC} | jq -r '.buildid') PR_SHA=$(echo ${JOB_SPEC} | jq -r '.refs.pulls[0].sha') # Get Pull request info - Pull request PR_NUMBER=$(echo ${JOB_SPEC} | jq -r '.refs.pulls[0].number') -PR_REPO_NAME=$(curl -s -X GET -H \ - -H "Accept: application/vnd.github+json" \ - -H "X-GitHub-Api-Version: 2022-11-28" \ - https://api.github.com/repos/${REF_ORG}/${REF_REPO}/pulls/${PR_NUMBER} | \ - jq -r '.head.repo.full_name') - -DEPENDS_ON=$(curl -s -X GET -H \ - -H "Accept: application/vnd.github+json" \ - -H "X-GitHub-Api-Version: 2022-11-28" \ - https://api.github.com/repos/${REF_ORG}/${REF_REPO}/pulls/${PR_NUMBER} | \ - jq -r '.body' | grep -iE "(depends-on).*(openstack-operator)" || true) +PR_REPO_NAME=$(curl -s -X GET -H \ + -H "Accept: application/vnd.github+json" \ + -H "X-GitHub-Api-Version: 2022-11-28" \ + https://api.github.com/repos/${REF_ORG}/${REF_REPO}/pulls/${PR_NUMBER} | + jq -r '.head.repo.full_name') + +DEPENDS_ON=$(curl -s -X GET -H \ + -H "Accept: application/vnd.github+json" \ + -H "X-GitHub-Api-Version: 2022-11-28" \ + https://api.github.com/repos/${REF_ORG}/${REF_REPO}/pulls/${PR_NUMBER} | + jq -r '.body' | grep -iE "(depends-on).*(openstack-operator)" || true) # Fails if step is not being used on openstack-k8s-operators repos # Gets base repo name BASE_OP=${REF_REPO} IS_REHEARSAL=false if [[ "$REF_ORG" != "$DEFAULT_ORG" ]]; then - echo "Not a ${DEFAULT_ORG} job. Checking if isn't a rehearsal job..." - EXTRA_REF_REPO=$(echo ${JOB_SPEC} | jq -r '.extra_refs[0].repo') - EXTRA_REF_ORG=$(echo ${JOB_SPEC} | jq -r '.extra_refs[0].org') - REF_BRANCH=$(echo ${JOB_SPEC} | jq -r '.extra_refs[0].base_ref') - if [[ "$EXTRA_REF_ORG" != "$DEFAULT_ORG" ]]; then - echo "Failing since this step supports only ${DEFAULT_ORG} changes." - exit 1 - fi - IS_REHEARSAL=true - BASE_OP=${EXTRA_REF_REPO} + echo "Not a ${DEFAULT_ORG} job. Checking if isn't a rehearsal job..." + EXTRA_REF_REPO=$(echo ${JOB_SPEC} | jq -r '.extra_refs[0].repo') + EXTRA_REF_ORG=$(echo ${JOB_SPEC} | jq -r '.extra_refs[0].org') + REF_BRANCH=$(echo ${JOB_SPEC} | jq -r '.extra_refs[0].base_ref') + if [[ "$EXTRA_REF_ORG" != "$DEFAULT_ORG" ]]; then + echo "Failing since this step supports only ${DEFAULT_ORG} changes." + exit 1 + fi + IS_REHEARSAL=true + BASE_OP=${EXTRA_REF_REPO} fi SERVICE_NAME=$(echo "${BASE_OP}" | sed 's/\(.*\)-operator/\1/') # sets default branch for install_yamls @@ -64,8 +64,8 @@ function create_openstack_namespace { # Get build status function get_build_status() { - le_status=$(oc get builds -l buildconfig="$1" -o json | jq -r '.items[0].status.phase') - echo $le_status + le_status=$(oc get builds -l buildconfig="$1" -o json | jq -r '.items[0].status.phase') + echo $le_status } # Check if build didn't fail @@ -87,8 +87,8 @@ function check_build_result { # sleep time hardcoded to 30s. Adding + 29 to round up the result nb_retries=$(((BUILD_COMPLETE_TIMEOUT + 29) / 30)) while [[ "$build_status" != "Complete" ]]; do - n=$((n+1)) - if (( n > nb_retries )); then + n=$((n + 1)) + if ((n > nb_retries)); then echo "Build ${build_name} failed to complete. Current status is ${build_status}. Aborting..." exit 1 fi @@ -100,20 +100,20 @@ function check_build_result { # Clone the openstack-operator and checkout # the requested PR function clone_openstack_operator { - git clone https://github.com/openstack-k8s-operators/openstack-operator.git -b ${REF_BRANCH} - pushd openstack-operator - local pr_num="" - # Depends-On syntax detected in the PR description: get the PR ID - if [[ -n $DEPENDS_ON ]]; then - pr_num=$(echo "$DEPENDS_ON" | rev | cut -d"/" -f1 | rev) - fi - # make sure the PR ID we parse is a number - if [[ "$pr_num" == ?(-)+([0-9]) ]]; then - # checkout pr $pr_num - git fetch origin pull/"$pr_num"/head:PR"$pr_num" - git checkout PR"$pr_num" - fi - popd + git clone https://github.com/openstack-k8s-operators/openstack-operator.git -b ${REF_BRANCH} + pushd openstack-operator + local pr_num="" + # Depends-On syntax detected in the PR description: get the PR ID + if [[ -n $DEPENDS_ON ]]; then + pr_num=$(echo "$DEPENDS_ON" | rev | cut -d"/" -f1 | rev) + fi + # make sure the PR ID we parse is a number + if [[ "$pr_num" == ?(-)+([0-9]) ]]; then + # checkout pr $pr_num + git fetch origin pull/"$pr_num"/head:PR"$pr_num" + git checkout PR"$pr_num" + fi + popd } # Builds and push operator image @@ -156,6 +156,12 @@ function build_push_operator_images { DOCKERFILE_PATH_PATCH=(\{\"spec\":\{\"strategy\":\{\"dockerStrategy\":\{\"dockerfilePath\":\""${BUNDLE_DOCKERFILE}"\"\}\}\}\}) oc patch bc ${OPERATOR}-bundle -p "${DOCKERFILE_PATH_PATCH[@]}" + + # Enable webhooks in Prow CI Job builds + oc patch bc/${OPERATOR}-bundle \ + --type='json' \ + -p='[{"op": "add", "path": "/spec/strategy/dockerStrategy/env", "value": [{"name": "ENABLE_WEBHOOKS", "value": "true"}]}]' + oc set build-secret --pull bc/${OPERATOR}-bundle ${DOCKER_REGISTRY_SECRET} oc start-build ${OPERATOR}-bundle --from-dir . -F check_build_result ${OPERATOR}-bundle @@ -164,7 +170,7 @@ function build_push_operator_images { INDEX_DOCKERFILE="index.Dockerfile" DOCKERFILE_PATH_PATCH=(\{\"spec\":\{\"strategy\":\{\"dockerStrategy\":\{\"dockerfilePath\":\""${INDEX_DOCKERFILE}"\"\}\}\}\}) -# todo: Improve include manila bundle workflow. For meta operaor only we need to add manila bundle in index and not for individual operators like keystone. + # todo: Improve include manila bundle workflow. For meta operaor only we need to add manila bundle in index and not for individual operators like keystone. if [[ "$OPERATOR" == "$META_OPERATOR" ]]; then local OPENSTACK_BUNDLES OPENSTACK_BUNDLES=$(/bin/bash hack/pin-bundle-images.sh)