From 78b9acf97f4e3679fd4275bfb521446f157e1cc6 Mon Sep 17 00:00:00 2001 From: Carina Kothe <69976260+grischperl@users.noreply.github.com> Date: Wed, 3 Jan 2024 09:21:19 +0100 Subject: [PATCH] Add release flow (#31) * Add release flow * Release using branch name as input * Fix `needs` input * Fix `needs` input * Change workflow to be triggered manually * No inputs for manual trigger --- scripts/check_tag_info.sh | 32 +++++++++++++++++ scripts/verify_status.sh | 75 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 107 insertions(+) create mode 100644 scripts/check_tag_info.sh create mode 100755 scripts/verify_status.sh diff --git a/scripts/check_tag_info.sh b/scripts/check_tag_info.sh new file mode 100644 index 0000000..bb9ffab --- /dev/null +++ b/scripts/check_tag_info.sh @@ -0,0 +1,32 @@ +#!/usr/bin/env bash + +############################## +# Check tags in security-scan-config.yaml +# Image Tag, rc-tag +############################## + + +# Get release version +DESIRED_TAG="${1:-"main"}" + +# Get eventing-publisher-proxy tag from sec-scanners-config.yaml +SEC_SCAN_TO_CHECK="${2:-europe-docker.pkg.dev/kyma-project/prod/eventing-publisher-proxy}" +IMAGE_TAG=$(cat sec-scanners-config.yaml | grep "${SEC_SCAN_TO_CHECK}" | cut -d : -f 2) + +# Get rc-tag +RC_TAG_TO_CHECK="${3:-rc-tag}" +RC_TAG=$(cat sec-scanners-config.yaml | grep "${RC_TAG_TO_CHECK}" | cut -d : -f 2 | xargs) + +# Check IMAGE_TAG and required image tag +if [[ "$IMAGE_TAG" != "$DESIRED_TAG" ]] || [[ "$RC_TAG" != "$DESIRED_TAG" ]]; then + # ERROR: Tag issue + echo "Tags are not correct: + - wanted: $DESIRED_TAG + - security-scanner image tag: $IMAGE_TAG + - rc-tag: $RC_TAG" + exit 1 +fi + +# OK: Everything is fine +echo "Tags are correct" +exit 0 diff --git a/scripts/verify_status.sh b/scripts/verify_status.sh new file mode 100755 index 0000000..21fd686 --- /dev/null +++ b/scripts/verify_status.sh @@ -0,0 +1,75 @@ +#!/usr/bin/env bash + +echo "Checking status of POST Jobs for Eventing-Manager" + +REF_NAME="${1:-"main"}" +TIMEOUT_TIME="${2:-600}" +INTERVAL_TIME="${3:-3}" +INITIAL_WAIT_TIME="${4:-30}" + +# Generate job Status URL +STATUS_URL="https://api.github.com/repos/kyma-project/eventing-manager/commits/${REF_NAME}/status" + +# Dates +START_TIME=$(date +%s) +TODAY_DATE=$(date '+%Y-%m-%d') + +# Retry function +function retry { + + # Get status result + local statusresult=$(curl -L -H "Accept: application/vnd.github+json" -H "X-GitHub-Api-Version: 2022-11-28" ${STATUS_URL}) + + # Get overall state + fullstatus=$(echo $statusresult | jq '.state' | tr -d '"') + + # Collect latest run related data + local latestrun=$(echo $statusresult | jq '.statuses[-1]') + local latestrun_state=$(echo $latestrun | jq '.state' | tr -d '"') + local latestrun_createdat=$(echo $latestrun | jq '.created_at' | tr -d '"') + local latestrun_targeturl=$(echo $latestrun | jq '.target_url' | tr -d '"') + + # Check Today's run data + if [[ $latestrun_createdat == *"$TODAY_DATE"* ]]; then + echo $latestrun_createdat + echo $latestrun_state + echo $latestrun_targeturl + fi + + # Show all execution for Today + echo $statusresult | jq --arg t $TODAY_DATE '.statuses[]|select(.created_at | contains($t))' + + # Date time for time-out + local CURRENT_TIME=$(date +%s) + local elapsed_time=$((CURRENT_TIME - START_TIME)) + + # Check time-out + if [ $elapsed_time -ge $TIMEOUT_TIME ]; then + echo "Timeout reached. Exiting." + exit 1 + fi + + if [ "$fullstatus" == "success" ]; then + echo "Success!" + elif [ "$fullstatus" == "failed" ]; then + # Show overall state to user + echo "$statusresult" + echo "Failure! Exiting with an error." + exit 1 + elif [ "$fullstatus" == "pending" ]; then + echo "Status is '$fullstatus'. Retrying in $INTERVAL_TIME seconds..." + sleep $INTERVAL_TIME + else + echo "Invalid result: $result" + exit 1 + fi + +} + +# Initial wait +sleep $INITIAL_WAIT_TIME +# Call retry function +retry +while [ "$fullstatus" == "pending" ]; do + retry +done