mirror of
https://github.com/CompassConnections/Compass.git
synced 2026-01-01 10:28:06 -05:00
57 lines
1.7 KiB
Bash
Executable File
57 lines
1.7 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# steps to deploy new version to GCP:
|
|
# 1. build new docker image & upload to Google
|
|
# 2. create a new GCP instance template with the new docker image
|
|
# 3. tell the GCP 'backend service' for the API to update to the new template
|
|
# 4. a. GCP creates a new instance with the new template
|
|
# b. wait for the new instance to be healthy (serving TCP connections)
|
|
# c. route new connections to the new instance
|
|
# d. delete the old instance
|
|
|
|
set -e
|
|
|
|
cd "$(dirname "$0")"
|
|
|
|
source ../../.env
|
|
|
|
ENV=${1:-prod}
|
|
|
|
# Config
|
|
REGION="us-west1"
|
|
ZONE="us-west1-b"
|
|
|
|
PROJECT="compass-130ba"
|
|
SERVICE_NAME="api"
|
|
|
|
GIT_REVISION=$(git rev-parse --short HEAD)
|
|
TIMESTAMP=$(date +"%s")
|
|
IMAGE_TAG="${TIMESTAMP}-${GIT_REVISION}"
|
|
IMAGE_URL="${REGION}-docker.pkg.dev/${PROJECT}/builds/${SERVICE_NAME}:${IMAGE_TAG}"
|
|
|
|
echo "🚀 Deploying ${SERVICE_NAME} to ${ENV} ($(date "+%Y-%m-%d %I:%M:%S %p"))"
|
|
yarn build
|
|
|
|
gcloud auth print-access-token | docker login -u oauth2accesstoken --password-stdin us-west1-docker.pkg.dev
|
|
docker build . --tag ${IMAGE_URL} --platform linux/amd64
|
|
echo "docker push ${IMAGE_URL}"
|
|
docker push ${IMAGE_URL}
|
|
|
|
export TF_VAR_image_url=$IMAGE_URL
|
|
export TF_VAR_env=$ENV
|
|
tofu apply -auto-approve
|
|
|
|
INSTANCE_NAME=$(gcloud compute instances list \
|
|
--filter="zone:(us-west1-c)" \
|
|
--sort-by="~creationTimestamp" \
|
|
--format="value(name)" \
|
|
--limit=1)
|
|
SERVICE_ACCOUNT_EMAIL=$(gcloud compute instances describe ${INSTANCE_NAME} \
|
|
--zone us-west1-c \
|
|
--format="value(serviceAccounts.email)")
|
|
gcloud projects add-iam-policy-binding ${PROJECT} \
|
|
--member="serviceAccount:$SERVICE_ACCOUNT_EMAIL" \
|
|
--role="roles/artifactregistry.reader"
|
|
|
|
echo "✅ Deployment complete! Image: ${IMAGE_URL}"
|