Some checks failed
Deploy to Phoenix / deploy (push) Has been cancelled
Co-authored-by: Cursor <cursoragent@cursor.com>
63 lines
1.9 KiB
Bash
Executable File
63 lines
1.9 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# Add Gitea webhook for Phoenix deploy to a repository.
|
|
# Usage: GITEA_TOKEN=xxx PHOENIX_WEBHOOK_URL=https://host:4001/webhook/gitea bash add-gitea-webhook-phoenix.sh [owner/repo]
|
|
# Example: GITEA_TOKEN=xxx PHOENIX_WEBHOOK_URL=http://192.168.11.59:4001/webhook/gitea bash add-gitea-webhook-phoenix.sh d-bis/proxmox
|
|
|
|
set -euo pipefail
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
PROJECT_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)"
|
|
[ -f "$PROJECT_ROOT/.env" ] && set +u && source "$PROJECT_ROOT/.env" 2>/dev/null || true && set -u
|
|
|
|
GITEA_URL="${GITEA_URL:-https://gitea.d-bis.org}"
|
|
GITEA_TOKEN="${GITEA_TOKEN:-}"
|
|
PHOENIX_WEBHOOK_URL="${PHOENIX_WEBHOOK_URL:-}"
|
|
REPO="${1:-d-bis/proxmox}"
|
|
|
|
if [ -z "$GITEA_TOKEN" ]; then
|
|
echo "Set GITEA_TOKEN (from Gitea Settings → Applications)"
|
|
exit 1
|
|
fi
|
|
if [ -z "$PHOENIX_WEBHOOK_URL" ]; then
|
|
echo "Set PHOENIX_WEBHOOK_URL (e.g. http://192.168.11.59:4001/webhook/gitea)"
|
|
exit 1
|
|
fi
|
|
|
|
API="${GITEA_URL%/}/api/v1"
|
|
OWNER="${REPO%%/*}"
|
|
REPO_NAME="${REPO#*/}"
|
|
|
|
# Check if webhook already exists
|
|
EXISTING=$(curl -s -H "Authorization: token $GITEA_TOKEN" "$API/repos/$OWNER/$REPO_NAME/hooks" | jq -r ".[] | select(.config.url == \"$PHOENIX_WEBHOOK_URL\") | .id" 2>/dev/null || true)
|
|
if [ -n "$EXISTING" ]; then
|
|
echo "Webhook already exists for $REPO -> $PHOENIX_WEBHOOK_URL (id=$EXISTING)"
|
|
exit 0
|
|
fi
|
|
|
|
# Create webhook
|
|
BODY=$(jq -n \
|
|
--arg url "$PHOENIX_WEBHOOK_URL" \
|
|
'{
|
|
type: "gitea",
|
|
config: {
|
|
url: $url,
|
|
content_type: "json"
|
|
},
|
|
events: ["push", "create"],
|
|
active: true
|
|
}')
|
|
|
|
RESP=$(curl -s -w "\n%{http_code}" -X POST "$API/repos/$OWNER/$REPO_NAME/hooks" \
|
|
-H "Authorization: token $GITEA_TOKEN" \
|
|
-H "Content-Type: application/json" \
|
|
-d "$BODY")
|
|
HTTP=$(echo "$RESP" | tail -1)
|
|
BODY=$(echo "$RESP" | sed '$d')
|
|
|
|
if [ "$HTTP" = "201" ]; then
|
|
echo "Webhook added for $REPO -> $PHOENIX_WEBHOOK_URL"
|
|
else
|
|
echo "Failed ($HTTP): $BODY"
|
|
exit 1
|
|
fi
|