#!/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