Spaces:
Running
Running
| # 從 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 | |
| auth: check-config | |
| gcloud auth login | |
| gcloud config set project $(PROJECT_ID) | |
| gcloud auth configure-docker | |
| # 上傳 secrets 到 Secret Manager | |
| secrets: check-config | |
| gcloud services enable secretmanager.googleapis.com | |
| ./upload_secrets.sh | |
| # 建立並推送 Docker image | |
| docker: check-config | |
| docker buildx build --platform linux/amd64 -t $(IMAGE_NAME) . --push | |
| # 部署到 Cloud Run | |
| 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" | |
| # 一次執行所有步驟 | |
| all: auth secrets docker deploy | |
| # 只更新 Docker image 和部署(不處理 secrets) | |
| update: docker deploy | |
| # 顯示說明 | |
| 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)\"" |