#!/bin/bash # Deploy Webhook Trigger Script # Triggers Coolify deployment via webhook or API # Configuration - Set these in your environment or .env file # COOLIFY_WEBHOOK_URL - The webhook URL from Coolify dashboard # COOLIFY_API_URL - Your Coolify instance URL (e.g., https://app.abundancepartners.app) # COOLIFY_API_TOKEN - Your API token set -e # Colors for output RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' NC='\033[0m' # No Color log_info() { echo -e "${GREEN}[INFO]${NC} $1" } log_warn() { echo -e "${YELLOW}[WARN]${NC} $1" } log_error() { echo -e "${RED}[ERROR]${NC} $1" } # Method 1: Trigger via Webhook URL deploy_via_webhook() { local webhook_url=$1 if [ -z "$webhook_url" ]; then log_error "Webhook URL not provided" exit 1 fi log_info "Triggering deployment via webhook..." response=$(curl -s -w "\n%{http_code}" -X POST "$webhook_url") http_code=$(echo "$response" | tail -n1) body=$(echo "$response" | sed '$d') if [ "$http_code" -eq 200 ] || [ "$http_code" -eq 201 ]; then log_info "Deployment triggered successfully" echo "$body" else log_error "Deployment failed with HTTP $http_code" echo "$body" exit 1 fi } # Method 2: Trigger via Coolify API deploy_via_api() { local app_uuid=$1 local api_url=${COOLIFY_API_URL:-"https://app.abundancepartners.app"} local api_token=$COOLIFY_API_TOKEN if [ -z "$app_uuid" ] || [ -z "$api_token" ]; then log_error "App UUID and API token required" exit 1 fi log_info "Triggering deployment via API for app: $app_uuid" response=$(curl -s -w "\n%{http_code}" \ -X POST \ -H "Authorization: Bearer $api_token" \ -H "Content-Type: application/json" \ "${api_url}/api/v1/deploy?uuid=${app_uuid}") http_code=$(echo "$response" | tail -n1) body=$(echo "$response" | sed '$d') if [ "$http_code" -eq 200 ] || [ "$http_code" -eq 201 ]; then log_info "Deployment triggered successfully" echo "$body" else log_error "Deployment failed with HTTP $http_code" echo "$body" exit 1 fi } # Check deployment status check_status() { local app_uuid=$1 local api_url=${COOLIFY_API_URL:-"https://app.abundancepartners.app"} local api_token=$COOLIFY_API_TOKEN log_info "Checking deployment status..." curl -s -H "Authorization: Bearer $api_token" \ "${api_url}/api/v1/applications/${app_uuid}" | jq '.' } # Usage usage() { echo "Usage: $0 [command] [options]" echo "" echo "Commands:" echo " webhook Deploy via webhook URL" echo " api Deploy via Coolify API" echo " status Check deployment status" echo "" echo "Environment Variables:" echo " COOLIFY_API_URL Your Coolify instance URL" echo " COOLIFY_API_TOKEN Your API token" echo "" echo "Examples:" echo " $0 webhook https://app.abundancepartners.app/api/v1/webhooks/deploy/abc123" echo " $0 api abc123-def456-ghi789" echo " COOLIFY_API_TOKEN=your_token $0 api abc123-def456-ghi789" } # Main case "$1" in webhook) deploy_via_webhook "$2" ;; api) deploy_via_api "$2" ;; status) check_status "$2" ;; *) usage exit 1 ;; esac