- Schema.org JSON-LD templates (product, event, local-business, faq) - Brand, UI, SEO, and decision guide rules - Working code snippets (vendor-card, schema-inject, deploy-webhook) - JSON schemas for project config validation - Client presets (slc-bride, default) - Self-update protocol with changelog tracking Made-with: Cursor
134 lines
3.4 KiB
Bash
134 lines
3.4 KiB
Bash
#!/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 <webhook_url> Deploy via webhook URL"
|
|
echo " api <app_uuid> Deploy via Coolify API"
|
|
echo " status <app_uuid> 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
|