|
|
#!/bin/bash |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
set -e |
|
|
|
|
|
PROJECT_ID=${1:-"your-project-id"} |
|
|
REGION=${2:-"us-central1"} |
|
|
SERVICE_NAME="phishing-detection-api" |
|
|
|
|
|
echo "==========================================" |
|
|
echo "Phishing Detection API - GCP Deployment" |
|
|
echo "==========================================" |
|
|
echo "Project ID: $PROJECT_ID" |
|
|
echo "Region: $REGION" |
|
|
echo "Service Name: $SERVICE_NAME" |
|
|
echo "==========================================" |
|
|
|
|
|
|
|
|
if ! command -v gcloud &> /dev/null; then |
|
|
echo "Error: gcloud CLI is not installed. Please install it first." |
|
|
exit 1 |
|
|
fi |
|
|
|
|
|
|
|
|
if ! command -v docker &> /dev/null; then |
|
|
echo "Error: Docker is not installed. Please install it first." |
|
|
exit 1 |
|
|
fi |
|
|
|
|
|
|
|
|
echo "Setting GCP project..." |
|
|
gcloud config set project $PROJECT_ID |
|
|
|
|
|
|
|
|
echo "Enabling required APIs..." |
|
|
gcloud services enable cloudbuild.googleapis.com |
|
|
gcloud services enable run.googleapis.com |
|
|
gcloud services enable containerregistry.googleapis.com |
|
|
|
|
|
|
|
|
echo "Checking for GROQ_API_KEY secret..." |
|
|
if ! gcloud secrets describe GROQ_API_KEY --project=$PROJECT_ID &> /dev/null; then |
|
|
echo "GROQ_API_KEY secret not found. Creating it..." |
|
|
read -sp "Enter your GROQ_API_KEY: " GROQ_KEY |
|
|
echo |
|
|
echo -n "$GROQ_KEY" | gcloud secrets create GROQ_API_KEY \ |
|
|
--data-file=- \ |
|
|
--replication-policy="automatic" \ |
|
|
--project=$PROJECT_ID |
|
|
|
|
|
|
|
|
PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID --format="value(projectNumber)") |
|
|
gcloud secrets add-iam-policy-binding GROQ_API_KEY \ |
|
|
--member="serviceAccount:$PROJECT_NUMBER-compute@developer.gserviceaccount.com" \ |
|
|
--role="roles/secretmanager.secretAccessor" \ |
|
|
--project=$PROJECT_ID |
|
|
else |
|
|
echo "GROQ_API_KEY secret already exists." |
|
|
fi |
|
|
|
|
|
|
|
|
echo "Building and deploying using Cloud Build..." |
|
|
gcloud builds submit --config=cloudbuild.yaml --project=$PROJECT_ID |
|
|
|
|
|
|
|
|
echo "Deployment complete!" |
|
|
echo "Getting service URL..." |
|
|
SERVICE_URL=$(gcloud run services describe $SERVICE_NAME \ |
|
|
--region=$REGION \ |
|
|
--format="value(status.url)" \ |
|
|
--project=$PROJECT_ID) |
|
|
|
|
|
echo "==========================================" |
|
|
echo "Deployment Successful!" |
|
|
echo "Service URL: $SERVICE_URL" |
|
|
echo "Health Check: $SERVICE_URL/health" |
|
|
echo "API Docs: $SERVICE_URL/docs" |
|
|
echo "==========================================" |
|
|
|