# 從 local_config.json 讀取配置 PROJECT_ID := $(shell jq -r '.PROJECT_ID // "ai-square-463013"' local_config.json) SERVICE_NAME := $(shell jq -r '.SERVICE_NAME // "vaitor2"' local_config.json) # 檢查必要的環境變數 check-config: @test -f local_config.json || (echo "錯誤:需要 local_config.json 文件" && exit 1) # 專案相關變數 REGION := asia-east1 IMAGE_NAME := gcr.io/$(PROJECT_ID)/$(SERVICE_NAME) # 確保有登入 gcloud .PHONY: auth auth: check-config gcloud auth login gcloud config set project $(PROJECT_ID) gcloud auth configure-docker # 上傳 secrets 到 Secret Manager .PHONY: secrets secrets: check-config gcloud services enable secretmanager.googleapis.com ./upload_secrets.sh # 建立並推送 Docker image .PHONY: docker docker: check-config docker buildx build --platform linux/amd64 -t $(IMAGE_NAME) . --push # 部署到 Cloud Run .PHONY: deploy deploy: check-config gcloud run deploy $(SERVICE_NAME) \ --image $(IMAGE_NAME) \ --platform managed \ --region $(REGION) \ --allow-unauthenticated \ --memory 2Gi \ --cpu 2 \ --port=8080 \ --set-secrets="\ PASSWORD=$(SERVICE_NAME)-PASSWORD:latest,\ OPEN_AI_KEY=$(SERVICE_NAME)-OPEN_AI_KEY:latest,\ OPEN_AI_ASSISTANT_ID_GPT4_BOT1=$(SERVICE_NAME)-OPEN_AI_ASSISTANT_ID_GPT4_BOT1:latest,\ OPEN_AI_ASSISTANT_ID_GPT3_BOT1=$(SERVICE_NAME)-OPEN_AI_ASSISTANT_ID_GPT3_BOT1:latest,\ OPEN_AI_MODERATION_BOT1=$(SERVICE_NAME)-OPEN_AI_MODERATION_BOT1:latest,\ GROQ_API_KEY=$(SERVICE_NAME)-GROQ_API_KEY:latest,\ JUTOR_CHAT_KEY=$(SERVICE_NAME)-JUTOR_CHAT_KEY:latest,\ PERPLEXITY_API_KEY=$(SERVICE_NAME)-PERPLEXITY_API_KEY:latest,\ GOOGLE_APPLICATION_CREDENTIALS_JSON=$(SERVICE_NAME)-GOOGLE_APPLICATION_CREDENTIALS_JSON:latest,\ PROXY_USERNAME=$(SERVICE_NAME)-PROXY_USERNAME:latest,\ PROXY_PASSWORD=$(SERVICE_NAME)-PROXY_PASSWORD:latest" # 一次執行所有步驟 .PHONY: all all: auth secrets docker deploy # 只更新 Docker image 和部署(不處理 secrets) .PHONY: update update: docker deploy # 顯示說明 .PHONY: help help: @echo "可用的指令:" @echo " make auth - 登入 Google Cloud" @echo " make secrets - 上傳 secrets 到 Secret Manager" @echo " make docker - 建立並推送 Docker image" @echo " make deploy - 部署到 Cloud Run" @echo " make all - 執行所有步驟(auth + secrets + docker + deploy)" @echo " make update - 只更新 Docker image 和部署" @echo "" @echo "注意:請確保 local_config.json 中有以下設定:" @echo " PROJECT_ID: \"$(PROJECT_ID)\"" @echo " SERVICE_NAME: \"$(SERVICE_NAME)\""