From a3d2de2d34949601f5c4d64ee291032a0e69c2c5 Mon Sep 17 00:00:00 2001 From: Jiri Uhlir Date: Wed, 27 May 2026 13:13:03 +0200 Subject: [PATCH] Recreate Gitea webhooks during sync --- scripts/sync-gitea-webhooks.sh | 56 +++++++++++----------------------- 1 file changed, 17 insertions(+), 39 deletions(-) diff --git a/scripts/sync-gitea-webhooks.sh b/scripts/sync-gitea-webhooks.sh index ebd61de..f789cb6 100755 --- a/scripts/sync-gitea-webhooks.sh +++ b/scripts/sync-gitea-webhooks.sh @@ -2,21 +2,9 @@ set -euo pipefail CONFIG_FILE="/opt/appfactory/config/appfactory.env" - -if [ ! -f "$CONFIG_FILE" ]; then - echo "Missing config file: $CONFIG_FILE" - exit 1 -fi - source "$CONFIG_FILE" -if [ -z "${GITEA_URL:-}" ] || [ -z "${GITEA_ORG:-}" ] || [ -z "${GITEA_TOKEN:-}" ] || [ -z "${WEBHOOK_INTERNAL_URL:-}" ] || [ -z "${WEBHOOK_SECRET:-}" ]; then - echo "Missing required config values." - echo "Required: GITEA_URL, GITEA_ORG, GITEA_TOKEN, WEBHOOK_INTERNAL_URL, WEBHOOK_SECRET" - exit 1 -fi - -echo "Syncing Gitea webhooks" +echo "Recreating Gitea webhooks" echo "Org: $GITEA_ORG" echo "URL: $WEBHOOK_INTERNAL_URL" echo "" @@ -27,11 +15,6 @@ repos_json="$(curl -sS \ repo_names="$(echo "$repos_json" | jq -r '.[].name')" -if [ -z "$repo_names" ]; then - echo "No repositories found." - exit 0 -fi - for repo in $repo_names; do echo "Repository: $repo" @@ -39,10 +22,17 @@ for repo in $repo_names; do "$GITEA_URL/api/v1/repos/$GITEA_ORG/$repo/hooks" \ -H "Authorization: token $GITEA_TOKEN")" - hook_id="$(echo "$hooks_json" | jq -r \ - --arg url "$WEBHOOK_INTERNAL_URL" \ - '.[] | select(.type == "gitea") | select(.config.url == $url) | .id' \ - | head -n 1)" + echo "$hooks_json" | jq -r '.[] | select(.type == "gitea") | .id' | while read -r hook_id; do + if [ -n "$hook_id" ] && [ "$hook_id" != "null" ]; then + echo " Deleting old hook ID: $hook_id" + + curl -sS -X DELETE \ + "$GITEA_URL/api/v1/repos/$GITEA_ORG/$repo/hooks/$hook_id" \ + -H "Authorization: token $GITEA_TOKEN" >/dev/null || true + fi + done + + echo " Creating fresh hook" payload="$(jq -n \ --arg url "$WEBHOOK_INTERNAL_URL" \ @@ -58,23 +48,11 @@ for repo in $repo_names; do } }')" - if [ -n "$hook_id" ] && [ "$hook_id" != "null" ]; then - echo " Updating hook ID: $hook_id" - - curl -sS -X PATCH \ - "$GITEA_URL/api/v1/repos/$GITEA_ORG/$repo/hooks/$hook_id" \ - -H "Authorization: token $GITEA_TOKEN" \ - -H "Content-Type: application/json" \ - -d "$payload" >/dev/null - else - echo " Creating hook" - - curl -sS -X POST \ - "$GITEA_URL/api/v1/repos/$GITEA_ORG/$repo/hooks" \ - -H "Authorization: token $GITEA_TOKEN" \ - -H "Content-Type: application/json" \ - -d "$payload" >/dev/null - fi + curl -sS -X POST \ + "$GITEA_URL/api/v1/repos/$GITEA_ORG/$repo/hooks" \ + -H "Authorization: token $GITEA_TOKEN" \ + -H "Content-Type: application/json" \ + -d "$payload" >/dev/null done echo ""