Skip to content

Commit 0ebce98

Browse files
author
Srihari Raman
committed
Updated shell script and staging vars
1 parent 3608eed commit 0ebce98

3 files changed

Lines changed: 75 additions & 15 deletions

File tree

scripts/README.md

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,29 @@ Deployment script that validates configuration and deploys the MCP server to AWS
1010

1111
**Usage:**
1212
```bash
13-
./scripts/deploy.sh
13+
./scripts/deploy.sh --environment <staging|prod> [--tfworkspace <name>]
14+
```
15+
16+
**Options:**
17+
18+
| Flag | Short | Required | Description |
19+
|------|-------|----------|-------------|
20+
| `--environment` | `-e` | Yes | `staging` or `prod` |
21+
| `--tfworkspace` | `-w` | No | Terraform workspace name (default: `boston-staging` or `boston-prod`) |
22+
| `--help` | `-h` | No | Show help |
23+
24+
**Examples:**
25+
```bash
26+
./scripts/deploy.sh --environment staging
27+
./scripts/deploy.sh -e prod
28+
./scripts/deploy.sh --environment staging --tfworkspace my-workspace
29+
./scripts/deploy.sh -e prod -w boston-prod-v2
1430
```
1531

1632
**What it does:**
1733
- Validates that exactly ONE plugin is enabled
1834
- Packages the code for Lambda deployment
35+
- Selects (or creates) the specified Terraform workspace
1936
- Deploys to AWS using Terraform
2037
- Outputs the API Gateway URL and Lambda Function URL
2138

scripts/deploy.sh

Lines changed: 56 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -18,15 +18,63 @@ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
1818
PROJECT_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)"
1919
cd "$PROJECT_ROOT"
2020

21-
# Environment: staging (default) or prod
22-
ENVIRONMENT="${1:-staging}"
21+
# Parse named arguments
22+
ENVIRONMENT=""
23+
TF_WORKSPACE=""
24+
25+
show_usage() {
26+
echo "Usage: $0 --environment <staging|prod> [--tfworkspace <name>]"
27+
echo ""
28+
echo "Options:"
29+
echo " --environment, -e Deployment environment: staging or prod (required)"
30+
echo " --tfworkspace, -w Terraform workspace name (default: boston-staging or boston-prod)"
31+
echo " --help, -h Show this help message"
32+
}
33+
34+
while [[ $# -gt 0 ]]; do
35+
case "$1" in
36+
--environment|-e)
37+
ENVIRONMENT="$2"
38+
shift 2
39+
;;
40+
--tfworkspace|-w)
41+
TF_WORKSPACE="$2"
42+
shift 2
43+
;;
44+
--help|-h)
45+
show_usage
46+
exit 0
47+
;;
48+
*)
49+
echo -e "${RED}❌ Error: Unknown argument '${1}'${NC}"
50+
show_usage
51+
exit 1
52+
;;
53+
esac
54+
done
55+
56+
if [ -z "$ENVIRONMENT" ]; then
57+
echo -e "${RED}❌ Error: --environment is required${NC}"
58+
show_usage
59+
exit 1
60+
fi
61+
2362
if [ "$ENVIRONMENT" != "staging" ] && [ "$ENVIRONMENT" != "prod" ]; then
24-
echo -e "${RED}❌ Error: Invalid environment '${ENVIRONMENT}'${NC}"
25-
echo "Usage: $0 [staging|prod]"
63+
echo -e "${RED}❌ Error: Invalid environment '${ENVIRONMENT}'. Must be 'staging' or 'prod'.${NC}"
64+
show_usage
2665
exit 1
2766
fi
2867

29-
echo -e "${GREEN}🚀 OpenContext Deployment [${ENVIRONMENT}]${NC}"
68+
# Default workspace per environment when not explicitly provided
69+
if [ -z "$TF_WORKSPACE" ]; then
70+
if [ "$ENVIRONMENT" = "prod" ]; then
71+
TF_WORKSPACE="boston-prod"
72+
else
73+
TF_WORKSPACE="boston-staging"
74+
fi
75+
fi
76+
77+
echo -e "${GREEN}🚀 OpenContext Deployment [${ENVIRONMENT}] (workspace: ${TF_WORKSPACE})${NC}"
3078
echo "================================"
3179
echo ""
3280

@@ -249,14 +297,8 @@ fi
249297
# Plan first - validates configuration and catches errors before any changes
250298
cd terraform/aws
251299

252-
# Select Terraform workspace: staging uses default, prod uses its own
253-
if [ "$ENVIRONMENT" = "prod" ]; then
254-
echo "Selecting Terraform workspace: boston-prod"
255-
terraform workspace select boston-prod 2>/dev/null || terraform workspace new boston-prod
256-
else
257-
echo "Selecting Terraform workspace: default"
258-
terraform workspace select default 2>/dev/null || true
259-
fi
300+
echo "Selecting Terraform workspace: ${TF_WORKSPACE}"
301+
terraform workspace select "$TF_WORKSPACE" 2>/dev/null || terraform workspace new "$TF_WORKSPACE"
260302

261303
echo -e "${YELLOW}📋 Planning Terraform changes...${NC}"
262304
if ! terraform plan \
@@ -272,6 +314,7 @@ fi
272314
echo ""
273315
echo -e "${YELLOW}⚠️ Deployment will apply the planned changes to AWS.${NC}"
274316
echo -e " Environment: ${ENVIRONMENT}"
317+
echo -e " Workspace: ${TF_WORKSPACE}"
275318
echo -e " Lambda: ${LAMBDA_NAME}"
276319
echo -e " Region: ${AWS_REGION}"
277320
echo ""

terraform/aws/staging.tfvars

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
lambda_name = "opencontext-mcp-server"
1+
lambda_name = "boston-opencontext-mcp-staging"
22
stage_name = "staging"
33
aws_region = "us-east-1"
44
config_file = "config.yaml"

0 commit comments

Comments
 (0)