vaitor2 / Makefile
youngtsai's picture
PROXY_USERNAME
27d3b59
# 從 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)\""