-
Notifications
You must be signed in to change notification settings - Fork 9
Expand file tree
/
Copy pathdeploy.sh
More file actions
executable file
·145 lines (124 loc) · 3.86 KB
/
Copy pathdeploy.sh
File metadata and controls
executable file
·145 lines (124 loc) · 3.86 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
#!/bin/bash
# ===========================================
# Deploy Falls CMS Agent to Vertex AI Agent Engine
# ===========================================
# This script handles all deployment steps:
# 1. Loads configuration from .deploy.env (create from .deploy.env.example)
# 2. Generates production .env in the package directory
# 3. Runs adk deploy
# 4. Extracts and displays the new agent ID
#
# Usage: ./deploy.sh
#
# Required: Create .deploy.env with your project-specific values
# (copy from .deploy.env.example and fill in)
set -e
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PACKAGE_DIR="$SCRIPT_DIR/falls_cms_agent"
DEPLOY_ENV="$SCRIPT_DIR/.deploy.env"
# ===========================================
# Load configuration
# ===========================================
if [[ ! -f "$DEPLOY_ENV" ]]; then
echo "❌ Missing .deploy.env file"
echo ""
echo "Create it from the example:"
echo " cp .deploy.env.example .deploy.env"
echo " # Edit .deploy.env with your values"
echo ""
exit 1
fi
# shellcheck source=/dev/null
source "$DEPLOY_ENV"
# Validate required variables
REQUIRED_VARS=(
"PROJECT_ID"
"PROJECT_NUMBER"
"REGION"
"STAGING_BUCKET"
"MCP_SERVER_URL"
"RAILS_EVENTS_URL"
"INTERNAL_API_TOKEN"
)
MISSING=()
for var in "${REQUIRED_VARS[@]}"; do
if [[ -z "${!var}" ]]; then
MISSING+=("$var")
fi
done
if [[ ${#MISSING[@]} -gt 0 ]]; then
echo "❌ Missing required variables in .deploy.env:"
for var in "${MISSING[@]}"; do
echo " - $var"
done
exit 1
fi
echo "=== Falls CMS Agent Deployment ==="
echo ""
# Step 1: Generate production .env
echo "📝 Generating production .env..."
cat > "$PACKAGE_DIR/.env" << EOF
# ===========================================
# Production Configuration (Agent Engine)
# Generated by deploy.sh - DO NOT EDIT MANUALLY
# ===========================================
GOOGLE_GENAI_USE_VERTEXAI=TRUE
GOOGLE_CLOUD_PROJECT=$PROJECT_ID
GOOGLE_CLOUD_LOCATION=$REGION
# MCP Server (Cloud Run)
MCP_SERVER_URL=$MCP_SERVER_URL
# Rails Event Push (for real-time step updates)
RAILS_EVENTS_URL=$RAILS_EVENTS_URL
INTERNAL_API_TOKEN=$INTERNAL_API_TOKEN
# OpenTelemetry for debugging
GOOGLE_CLOUD_AGENT_ENGINE_ENABLE_TELEMETRY=true
OTEL_INSTRUMENTATION_GENAI_CAPTURE_MESSAGE_CONTENT=true
EOF
echo " Created $PACKAGE_DIR/.env"
echo ""
# Step 2: Activate virtual environment if not already active
if [[ -z "$VIRTUAL_ENV" ]]; then
echo "🐍 Activating virtual environment..."
source "$SCRIPT_DIR/.venv/bin/activate"
fi
# Step 3: Run adk deploy and capture output
echo "🚀 Deploying to Agent Engine..."
echo " Project: $PROJECT_ID"
echo " Region: $REGION"
echo ""
DEPLOY_OUTPUT=$(adk deploy agent_engine \
--project="$PROJECT_ID" \
--region="$REGION" \
--staging_bucket="$STAGING_BUCKET" \
--display_name="Falls CMS Agent" \
--trace_to_cloud \
falls_cms_agent 2>&1) || {
echo "❌ Deployment failed!"
echo "$DEPLOY_OUTPUT"
exit 1
}
echo "$DEPLOY_OUTPUT"
echo ""
# Step 4: Extract the agent ID from output
# Looking for: "Created agent engine: projects/.../reasoningEngines/AGENT_ID"
AGENT_ID=$(echo "$DEPLOY_OUTPUT" | grep -oP 'reasoningEngines/\K[0-9]+' | tail -1)
if [[ -z "$AGENT_ID" ]]; then
echo "⚠️ Could not extract agent ID from deployment output"
echo " Check the output above for the agent resource name"
exit 0
fi
echo "✅ Deployment successful!"
echo ""
echo " New Agent ID: $AGENT_ID"
echo " Full resource: projects/$PROJECT_NUMBER/locations/$REGION/reasoningEngines/$AGENT_ID"
echo ""
echo " Note: Rails will fetch this ID automatically at deploy time via .kamal/secrets"
echo ""
echo ""
echo "=== Deployment Complete ==="
echo ""
echo "Next steps:"
echo " 1. Deploy Rails app: kamal deploy"
echo " (Agent ID will be fetched automatically from GCP)"
echo " 2. Test the assistant at your staging URL"
echo ""