#!/bin/bash # Komodo Setup Script for komodo integration # Run this script on a machine that has network access to Komodo set -e # Configuration KOMODO_HOST="${KOMODO_HOST:-komodo.internal}" KOMODO_PORT="${KOMODO_PORT:-9120}" KOMODO_URL="http://${KOMODO_HOST}:${KOMODO_PORT}" # Check for required environment variables if [ -z "$KOMODO_KEY" ] || [ -z "$KOMODO_SECRET" ]; then echo "Error: KOMODO_KEY and KOMODO_SECRET environment variables must be set" exit 1 fi echo "======================================" echo "Komodo Setup Script" echo "======================================" echo "Komodo URL: $KOMODO_URL" echo "" # Function to make Komodo API calls komodo_api() { local method=$1 local endpoint=$2 local data=$3 curl -s -X POST "${KOMODO_URL}/${endpoint}/${method}" \ -H "Content-Type: application/json" \ -H "x-api-key: ${KOMODO_KEY}" \ -H "x-api-secret: ${KOMODO_SECRET}" \ -d "$data" } # Test connection echo "Testing connection to Komodo..." VERSION=$(komodo_api "GetVersion" "read" '{}') if [ $? -eq 0 ]; then echo "✓ Connected to Komodo: $VERSION" else echo "✗ Failed to connect to Komodo at $KOMODO_URL" exit 1 fi echo "" # Step 1: Configure Git Provider echo "Step 1: Configuring Gitea provider..." # Note: Git provider configuration typically done via config file or UI # The API might not support adding git providers directly # This will be done through Resource Sync or config file echo " → Git providers are configured via core.config.toml" echo " → See komodo-gitea.config.toml for the configuration to add" echo "" # Step 2: List existing servers echo "Step 2: Checking for available servers..." SERVERS=$(komodo_api "ListServers" "read" '{}') echo "$SERVERS" | jq -r '.[] | " - \(.name) (\(.id))"' 2>/dev/null || echo " $SERVERS" echo "" echo "Note: You'll need a server ID for the Stack resource." echo "If no servers are listed, add one in Komodo UI or config." echo "" # Step 3: Create Build resource echo "Step 3: Creating Build resource 'komodo-build'..." BUILD_CONFIG='{ "name": "komodo-build", "description": "Build Docker image for komodo app", "tags": ["demo", "gitea"], "config": { "git_provider": "gitea.straymoog.xyz", "git_account": "stray", "repo": "stray/komodo", "branch": "main", "build_path": ".", "dockerfile_path": "Dockerfile" } }' BUILD_RESULT=$(komodo_api "CreateBuild" "write" "$BUILD_CONFIG" 2>&1) if echo "$BUILD_RESULT" | grep -q "error\|Error"; then echo " ⚠ Build might already exist or error occurred:" echo " $BUILD_RESULT" else echo " ✓ Build resource created" fi echo "" # Step 4: Create Stack resource echo "Step 4: Creating Stack resource 'komodo-stack'..." echo " → This requires a valid server_id" echo " → Skipping automatic creation - please create via UI or update this script with server_id" echo "" # STACK_CONFIG='{ # "name": "komodo-stack", # "description": "Deploy komodo app using docker-compose", # "tags": ["demo", "gitea"], # "config": { # "server_id": "YOUR_SERVER_ID_HERE", # "git_provider": "gitea.straymoog.xyz", # "git_account": "stray", # "repo": "stray/komodo", # "branch": "main", # "file_paths": ["docker-compose.yml"] # } # }' # komodo_api "CreateStack" "write" "$STACK_CONFIG" # Step 5: Create Resource Sync echo "Step 5: Creating Resource Sync 'komodo-sync'..." SYNC_CONFIG='{ "name": "komodo-sync", "description": "Sync Komodo resources from Git", "tags": ["demo", "gitea"], "config": { "git_provider": "gitea.straymoog.xyz", "git_account": "stray", "repo": "stray/komodo", "branch": "main", "resource_path": ".komodo", "commit_to_repo": false } }' SYNC_RESULT=$(komodo_api "CreateResourceSync" "write" "$SYNC_CONFIG" 2>&1) if echo "$SYNC_RESULT" | grep -q "error\|Error"; then echo " ⚠ Sync might already exist or error occurred:" echo " $SYNC_RESULT" else echo " ✓ Resource Sync created" echo " → You can now execute the sync to import all resources from .komodo/resources.toml" fi echo "" echo "======================================" echo "Setup Summary" echo "======================================" echo "Gitea webhooks: ✓ Created (3 webhooks)" echo " - Build webhook" echo " - Stack deploy webhook" echo " - Sync webhook" echo "" echo "Komodo resources:" echo " - Git provider: Configure in core.config.toml" echo " - Build: Created (or attempted)" echo " - Stack: Manual creation required (needs server_id)" echo " - Sync: Created (or attempted)" echo "" echo "Next steps:" echo "1. Add git provider config to core.config.toml (see komodo-gitea.config.toml)" echo "2. Restart Komodo core to load git provider" echo "3. Execute the Resource Sync to import all resources" echo "4. Test by pushing to the Git repository" echo "" echo "Repository: https://gitea.straymoog.xyz/stray/komodo" echo "======================================"