Recreate Gitea webhooks during sync

This commit is contained in:
2026-05-27 13:13:03 +02:00
parent 18d19f0592
commit a3d2de2d34
+17 -39
View File
@@ -2,21 +2,9 @@
set -euo pipefail set -euo pipefail
CONFIG_FILE="/opt/appfactory/config/appfactory.env" CONFIG_FILE="/opt/appfactory/config/appfactory.env"
if [ ! -f "$CONFIG_FILE" ]; then
echo "Missing config file: $CONFIG_FILE"
exit 1
fi
source "$CONFIG_FILE" source "$CONFIG_FILE"
if [ -z "${GITEA_URL:-}" ] || [ -z "${GITEA_ORG:-}" ] || [ -z "${GITEA_TOKEN:-}" ] || [ -z "${WEBHOOK_INTERNAL_URL:-}" ] || [ -z "${WEBHOOK_SECRET:-}" ]; then echo "Recreating Gitea webhooks"
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 "Org: $GITEA_ORG" echo "Org: $GITEA_ORG"
echo "URL: $WEBHOOK_INTERNAL_URL" echo "URL: $WEBHOOK_INTERNAL_URL"
echo "" echo ""
@@ -27,11 +15,6 @@ repos_json="$(curl -sS \
repo_names="$(echo "$repos_json" | jq -r '.[].name')" 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 for repo in $repo_names; do
echo "Repository: $repo" echo "Repository: $repo"
@@ -39,10 +22,17 @@ for repo in $repo_names; do
"$GITEA_URL/api/v1/repos/$GITEA_ORG/$repo/hooks" \ "$GITEA_URL/api/v1/repos/$GITEA_ORG/$repo/hooks" \
-H "Authorization: token $GITEA_TOKEN")" -H "Authorization: token $GITEA_TOKEN")"
hook_id="$(echo "$hooks_json" | jq -r \ echo "$hooks_json" | jq -r '.[] | select(.type == "gitea") | .id' | while read -r hook_id; do
--arg url "$WEBHOOK_INTERNAL_URL" \ if [ -n "$hook_id" ] && [ "$hook_id" != "null" ]; then
'.[] | select(.type == "gitea") | select(.config.url == $url) | .id' \ echo " Deleting old hook ID: $hook_id"
| head -n 1)"
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 \ payload="$(jq -n \
--arg url "$WEBHOOK_INTERNAL_URL" \ --arg url "$WEBHOOK_INTERNAL_URL" \
@@ -58,23 +48,11 @@ for repo in $repo_names; do
} }
}')" }')"
if [ -n "$hook_id" ] && [ "$hook_id" != "null" ]; then curl -sS -X POST \
echo " Updating hook ID: $hook_id" "$GITEA_URL/api/v1/repos/$GITEA_ORG/$repo/hooks" \
-H "Authorization: token $GITEA_TOKEN" \
curl -sS -X PATCH \ -H "Content-Type: application/json" \
"$GITEA_URL/api/v1/repos/$GITEA_ORG/$repo/hooks/$hook_id" \ -d "$payload" >/dev/null
-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
done done
echo "" echo ""