From 4dbc65729d9ba388fbae50b6f6f71d4f55d60ae4 Mon Sep 17 00:00:00 2001 From: sHa Date: Sun, 22 Mar 2026 12:32:09 +0200 Subject: [PATCH] feat: Enhance update-charts workflow with error handling and notifications --- .github/workflows/update-charts.yml | 31 ++++++++++++++++++++++++++++- scripts/update-charts.sh | 27 ++++++++++++++++++------- termix/Chart.yaml | 6 +++--- 3 files changed, 53 insertions(+), 11 deletions(-) diff --git a/.github/workflows/update-charts.yml b/.github/workflows/update-charts.yml index 9787756..6af714a 100644 --- a/.github/workflows/update-charts.yml +++ b/.github/workflows/update-charts.yml @@ -32,6 +32,11 @@ jobs: else echo "updates=false" >> $GITHUB_OUTPUT fi + if [ -f errors_summary.txt ]; then + echo "errors=true" >> $GITHUB_OUTPUT + else + echo "errors=false" >> $GITHUB_OUTPUT + fi - name: Commit and Push Changes if: steps.git-check.outputs.updates == 'true' @@ -43,7 +48,7 @@ jobs: git pull --rebase origin main git push - - name: Send Signal Notification + - name: Send Signal Notification (Updates) if: steps.git-check.outputs.updates == 'true' env: SIGNAL_URL: ${{ secrets.SIGNAL_URL }} @@ -66,3 +71,27 @@ jobs: curl -X POST "$SIGNAL_URL" \ -H "Content-Type: application/json" \ -d "$PAYLOAD" + + - name: Send Signal Notification (Errors) + if: steps.git-check.outputs.errors == 'true' + env: + SIGNAL_URL: ${{ secrets.SIGNAL_URL }} + SIGNAL_SENDER: ${{ secrets.SIGNAL_SENDER }} + SIGNAL_RECIPIENT: ${{ secrets.SIGNAL_RECIPIENT }} + run: | + if [ -z "$SIGNAL_URL" ] || [ -z "$SIGNAL_SENDER" ] || [ -z "$SIGNAL_RECIPIENT" ]; then + echo "Signal secrets not fully configured, skipping notification." + exit 0 + fi + ERRORS=$(cat errors_summary.txt) + MESSAGE=$(printf '⚠️ Helm Charts Version Check Errors\n\n%s' "$ERRORS") + + PAYLOAD=$(jq -n \ + --arg msg "$MESSAGE" \ + --arg num "$SIGNAL_SENDER" \ + --arg rec "$SIGNAL_RECIPIENT" \ + '{message: $msg, number: $num, recipients: [$rec]}') + + curl -X POST "$SIGNAL_URL" \ + -H "Content-Type: application/json" \ + -d "$PAYLOAD" diff --git a/scripts/update-charts.sh b/scripts/update-charts.sh index d69d922..d4d866a 100755 --- a/scripts/update-charts.sh +++ b/scripts/update-charts.sh @@ -2,11 +2,10 @@ # scripts/update-charts.sh # Checks for upstream image updates and bumps Helm chart versions automatically. -set -e - # Repository Root REPO_ROOT=$(git rev-parse --show-toplevel) UPDATES_FOUND="" +ERRORS_FOUND="" # Fetch latest version from different sources fetch_latest() { @@ -21,6 +20,11 @@ fetch_latest() { "dockerhub-tags") version=$(curl -s "https://registry.hub.docker.com/v2/repositories/$source_data/tags?page_size=100" | jq -r '.results[].name' | grep -E '^[0-9]+\.[0-9]+\.[0-9]+$' | sort -V -r | head -1) ;; + "dockerhub-tags-pattern") + local repo="${source_data%%:*}" + local pattern="${source_data#*:}" + version=$(curl -s "https://registry.hub.docker.com/v2/repositories/$repo/tags?page_size=100" | jq -r '.results[].name' | grep -E "$pattern" | sort -V -r | head -1) + ;; *) return 1 ;; @@ -69,11 +73,17 @@ for chart_dir in "$REPO_ROOT"/*/; do # Fetch and clean latest echo " Source image: $source_type" - latest_raw=$(fetch_latest "${source_type%%:*}" "${source_type#*:}") + if ! latest_raw=$(fetch_latest "${source_type%%:*}" "${source_type#*:}" 2>&1); then + echo " Error: Unsupported source type '${source_type%%:*}'." + ERRORS_FOUND="$ERRORS_FOUND\n- **$chart_name**: unsupported source type '${source_type%%:*}'" + continue + fi + latest_clean=$(apply_pattern "$latest_raw" "$source_pattern") if [ -z "$latest_clean" ]; then echo " Error: Could not fetch latest version." + ERRORS_FOUND="$ERRORS_FOUND\n- **$chart_name**: could not fetch latest version from $source_type" continue fi @@ -83,7 +93,7 @@ for chart_dir in "$REPO_ROOT"/*/; do if [ "$current_app_version" != "$latest_clean" ]; then new_chart_version=$(bump_version "$current_chart_version") echo " 🚀 Update found! Bumping to App: $latest_clean | Chart: $new_chart_version" - + # Update Chart.yaml sed -i.bak \ -e "s|^appVersion:.*|appVersion: \"$latest_clean\"|" \ @@ -100,7 +110,10 @@ done # Output summary for GH Actions if [ -n "$UPDATES_FOUND" ]; then echo -e "$UPDATES_FOUND" > "$REPO_ROOT/update_summary.txt" - exit 0 -else - exit 0 fi + +if [ -n "$ERRORS_FOUND" ]; then + echo -e "$ERRORS_FOUND" > "$REPO_ROOT/errors_summary.txt" +fi + +exit 0 diff --git a/termix/Chart.yaml b/termix/Chart.yaml index 4691fd1..fb743a4 100644 --- a/termix/Chart.yaml +++ b/termix/Chart.yaml @@ -2,8 +2,8 @@ apiVersion: v2 name: termix description: Termix Helm chart type: application -version: 0.1.0 -appVersion: "1.11.2" +version: 0.1.1 +appVersion: "2.0.0" annotations: - version-source: dockerhub-dev:bugattiguy527/termix:^release-[0-9]+\.[0-9]+\.[0-9]+$ + version-source: dockerhub-tags-pattern:bugattiguy527/termix:^release-[0-9]+\.[0-9]+\.[0-9]+$ version-pattern: "s|^release-||"