57 lines
1.9 KiB
Bash
57 lines
1.9 KiB
Bash
#!/bin/bash
|
|
set -e
|
|
|
|
# Default values
|
|
PROJECT_ID=${PROJECT_ID:-""}
|
|
REGION=${REGION:-"us-central1"}
|
|
SERVICE_CONFIG=${SERVICE_CONFIG:-"deployment/cloud-run/service.yaml"}
|
|
IMAGE_NAME=${IMAGE_NAME:-"sereact-api"}
|
|
IMAGE_TAG=${IMAGE_TAG:-"latest"}
|
|
REGISTRY=${REGISTRY:-"gcr.io"}
|
|
|
|
# Validate required parameters
|
|
if [ -z "$PROJECT_ID" ]; then
|
|
echo "Error: PROJECT_ID environment variable is required"
|
|
echo "Usage: PROJECT_ID=your-project-id ./scripts/deploy-to-cloud-run.sh"
|
|
exit 1
|
|
fi
|
|
|
|
# Full image reference
|
|
FULL_IMAGE_NAME="${REGISTRY}/${PROJECT_ID}/${IMAGE_NAME}:${IMAGE_TAG}"
|
|
|
|
# Check if service config exists
|
|
if [ ! -f "$SERVICE_CONFIG" ]; then
|
|
echo "Error: Service configuration file not found at $SERVICE_CONFIG"
|
|
exit 1
|
|
fi
|
|
|
|
# Build the image if BUILD=true
|
|
if [ "${BUILD:-false}" = "true" ]; then
|
|
echo "Building Docker image: ${FULL_IMAGE_NAME}"
|
|
docker build -t "${FULL_IMAGE_NAME}" -f Dockerfile .
|
|
echo "Build completed successfully"
|
|
fi
|
|
|
|
# Push the image if PUSH=true
|
|
if [ "${PUSH:-false}" = "true" ]; then
|
|
echo "Pushing image to registry: ${FULL_IMAGE_NAME}"
|
|
docker push "${FULL_IMAGE_NAME}"
|
|
echo "Image pushed successfully"
|
|
fi
|
|
|
|
# Update the image in the service configuration
|
|
echo "Updating image reference in service configuration..."
|
|
TMP_CONFIG=$(mktemp)
|
|
sed "s|image: .*|image: ${FULL_IMAGE_NAME}|g" "$SERVICE_CONFIG" > "$TMP_CONFIG"
|
|
|
|
echo "Deploying to Cloud Run using configuration..."
|
|
gcloud run services replace "$TMP_CONFIG" \
|
|
--project="$PROJECT_ID" \
|
|
--region="$REGION" \
|
|
--platform=managed
|
|
|
|
rm "$TMP_CONFIG"
|
|
|
|
echo "Deployment completed successfully"
|
|
echo "Service URL: $(gcloud run services describe sereact --region=${REGION} --project=${PROJECT_ID} --format='value(status.url)')"
|
|
echo "To view logs: gcloud logging read 'resource.type=cloud_run_revision AND resource.labels.service_name=sereact' --project=$PROJECT_ID --limit=10" |