Files
proxmox/scripts/dev-vm/add-gitea-webhook-phoenix.sh
defiQUG b8613905bd
Some checks failed
Deploy to Phoenix / validate (push) Failing after 15s
Deploy to Phoenix / deploy (push) Has been skipped
chore: sync workspace — configs, docs, scripts, CI, pnpm, submodules
- Submodule pins: dbis_core, cross-chain-pmm-lps, mcp-proxmox (local, push may be pending), metamask-integration, smom-dbis-138
- Atomic swap + cross-chain-pmm-lops-publish, deploy-portal workflow, phoenix deploy-targets, routing/aggregator matrices
- Docs, token-lists, forge proxy, phoenix API, runbooks, verify scripts

Made-with: Cursor
2026-04-21 22:01:33 -07:00

70 lines
2.3 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 PHOENIX_DEPLOY_SECRET=shared-secret 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:-}"
PHOENIX_DEPLOY_SECRET="${PHOENIX_DEPLOY_SECRET:-}"
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
echo "WARNING: Only add the webhook deploy path for repos that are not already deploying via Gitea Actions."
echo " If both Actions and webhook deploys are enabled for the same repo, pushes can trigger duplicate deploys."
echo ""
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" \
--arg secret "$PHOENIX_DEPLOY_SECRET" \
'{
type: "gitea",
config: {
url: $url,
content_type: "json",
secret: $secret
},
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