Files

60 lines
1.4 KiB
Bash
Executable File

#!/usr/bin/env bash
set -euo pipefail
CONFIG_FILE="/opt/appfactory/config/appfactory.env"
source "$CONFIG_FILE"
echo "Recreating Gitea webhooks"
echo "Org: $GITEA_ORG"
echo "URL: $WEBHOOK_INTERNAL_URL"
echo ""
repos_json="$(curl -sS \
"$GITEA_URL/api/v1/orgs/$GITEA_ORG/repos?limit=1000" \
-H "Authorization: token $GITEA_TOKEN")"
repo_names="$(echo "$repos_json" | jq -r '.[].name')"
for repo in $repo_names; do
echo "Repository: $repo"
hooks_json="$(curl -sS \
"$GITEA_URL/api/v1/repos/$GITEA_ORG/$repo/hooks" \
-H "Authorization: token $GITEA_TOKEN")"
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" \
--arg secret "$WEBHOOK_SECRET" \
'{
type: "gitea",
active: true,
events: ["push"],
config: {
url: $url,
content_type: "json",
secret: $secret
}
}')"
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 ""
echo "DONE"