File size: 2,581 Bytes
c826342
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
36e3da3
c826342
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
27d3b59
 
 
c826342
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
# 從 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)\""