13 KiB
13 KiB
| description | allowed-tools |
|---|---|
| Deploy application to Eureka platform (creates app if needed) | Read, Write, Edit, Bash, Glob, Grep |
Eureka Deploy
Input: "$ARGUMENTS"
PURPOSE
Deploy the current project to the Eureka platform. If no app_id is configured, automatically creates a new directory app first, then triggers the deployment.
⛔ CRITICAL RULES
MUST DO
- MUST check for existing
app_idin.claude/eureka-factory.yamlfirst - MUST create a new app via API if no
app_idexists - MUST save the new
app_idto config after creation - MUST display deployment status after triggering
CANNOT DO
- CANNOT deploy without valid API key
- CANNOT skip app creation if
app_idis missing - CANNOT proceed if API calls fail
EXECUTION FLOW
═══════════════════════════════════════════════════════════════
PHASE 1: Configuration Check
═══════════════════════════════════════════════════════════════
1.1: Display Start Banner
╔══════════════════════════════════════════════════════════════╗
║ 🚀 EUREKA DEPLOY ║
╠══════════════════════════════════════════════════════════════╣
║ Deploying to Eureka Platform... ║
╚══════════════════════════════════════════════════════════════╝
1.2: Check Configuration
Read the configuration file:
# Check if config exists
cat .claude/eureka-factory.yaml 2>/dev/null || cat .claude/eureka-factory.yml 2>/dev/null || echo "NO_CONFIG"
Extract from config:
api_key- Required for all operationsapp_id- If exists, skip app creationapi_endpoint- Optional custom endpoint
1.3: Validate API Key
If no api_key found:
╔══════════════════════════════════════════════════════════════╗
║ ❌ NO API KEY CONFIGURED ║
╠══════════════════════════════════════════════════════════════╣
║ Run `eureka setup` to configure your credentials. ║
╚══════════════════════════════════════════════════════════════╝
STOP EXECUTION
═══════════════════════════════════════════════════════════════
PHASE 2: App Creation (if needed)
═══════════════════════════════════════════════════════════════
2.1: Check for app_id
If app_id exists in config → SKIP TO PHASE 3
If app_id is missing:
╔══════════════════════════════════════════════════════════════╗
║ 📁 CREATING DIRECTORY APP ║
╠══════════════════════════════════════════════════════════════╣
║ No app_id found. Creating new app on Eureka... ║
╚══════════════════════════════════════════════════════════════╝
2.2: Determine App Name
Use the project directory name as the default app name:
APP_NAME=$(basename $(pwd))
echo "App name: $APP_NAME"
Or use argument if provided: $ARGUMENTS as app name
2.3: Create App via API
# Create app using eureka CLI
eureka deploy trigger --name "$APP_NAME" --type other --yes
If the command is not available, use direct API call:
API_KEY="<from config>"
API_ENDPOINT="<from config or default>"
curl -X POST "${API_ENDPOINT}/v1/apps" \
-H "Content-Type: application/json" \
-H "X-API-Key: ${API_KEY}" \
-d "{\"name\": \"${APP_NAME}\", \"type\": \"other\"}"
2.4: Save app_id to Config
Extract app_id from API response and update config:
# .claude/eureka-factory.yaml
api_key: <existing>
project_id: <existing>
repo_id: <existing>
app_id: <NEW_APP_ID> # Add this line
╔══════════════════════════════════════════════════════════════╗
║ ✅ APP CREATED ║
╠══════════════════════════════════════════════════════════════╣
║ App ID: <app_id> ║
║ Saved to: .claude/eureka-factory.yaml ║
╚══════════════════════════════════════════════════════════════╝
═══════════════════════════════════════════════════════════════
PHASE 3: Trigger Deployment
═══════════════════════════════════════════════════════════════
3.1: Trigger Deploy
# Using eureka CLI
eureka deploy trigger --yes
# Or direct API call
curl -X POST "${API_ENDPOINT}/v1/apps/${APP_ID}/deployments" \
-H "Content-Type: application/json" \
-H "X-API-Key: ${API_KEY}" \
-d '{"environment": "production"}'
3.2: Display Deployment Status
╔══════════════════════════════════════════════════════════════╗
║ ✅ DEPLOYMENT TRIGGERED ║
╠══════════════════════════════════════════════════════════════╣
║ Deployment ID: <deployment_id> ║
║ Status: PENDING ║
║ Environment: production ║
║ Version: <version> ║
╠══════════════════════════════════════════════════════════════╣
║ Use `/eureka:deploy-status` to check progress ║
║ Use `/eureka:deploy-logs` to view logs ║
╚══════════════════════════════════════════════════════════════╝
ARGUMENTS
| Argument | Default | Description |
|---|---|---|
[app-name] |
Directory name | Name for new app (only used if creating) |
--env <environment> |
production |
Deployment environment |
--branch <branch> |
Current branch | Git branch to deploy |
--force |
false |
Force deploy even if already deploying |
EXAMPLES
# Deploy current project (creates app if needed)
/eureka:deploy
# Deploy with custom app name
/eureka:deploy my-awesome-app
# Deploy specific branch to staging
/eureka:deploy --env staging --branch develop
# Force redeploy
/eureka:deploy --force
ERROR HANDLING
No Configuration
❌ No configuration found.
Run `eureka setup` to configure credentials.
App Creation Failed
❌ Failed to create app: <error message>
Check your API key and try again.
Deployment Failed
❌ Deployment failed: <error message>
Use `/eureka:deploy-logs` to see details.
FLOW DIAGRAM
┌─────────────────────────────────────────────────────────────────┐
│ /eureka:deploy │
├─────────────────────────────────────────────────────────────────┤
│ │ │
│ ▼ │
│ ┌─────────────────┐ │
│ │ Check Config │ │
│ └────────┬────────┘ │
│ │ │
│ ┌─────────▼─────────┐ │
│ │ Has API Key? │ │
│ └─────────┬─────────┘ │
│ │ │
│ NO │ YES │
│ ┌────────────────────┼────────────────────┐ │
│ ▼ ▼ │
│ ┌───────────┐ ┌─────────────────┐ │
│ │ ERROR │ │ Has app_id? │ │
│ │ No Key │ └────────┬────────┘ │
│ └───────────┘ │ │
│ NO │ YES │
│ ┌───────────────────┼──────────┐ │
│ ▼ ▼ │
│ ┌─────────────────┐ ┌──────────────┐
│ │ Create App │ │ │
│ │ via API │ │ │
│ └────────┬────────┘ │ │
│ │ │ │
│ ▼ │ │
│ ┌─────────────────┐ │ │
│ │ Save app_id │ │ │
│ │ to Config │ │ │
│ └────────┬────────┘ │ │
│ │ │ │
│ └───────────────────┘ │
│ │ │
│ ▼ │
│ ┌─────────────────┐ │
│ │ Trigger Deploy │ │
│ └────────┬────────┘ │
│ │ │
│ ▼ │
│ ┌─────────────────┐ │
│ │ Show Status │ │
│ └─────────────────┘ │
└─────────────────────────────────────────────────────────────────┘