-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathMakefile
More file actions
176 lines (150 loc) · 6.97 KB
/
Copy pathMakefile
File metadata and controls
176 lines (150 loc) · 6.97 KB
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
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
# 定义变量
VALID_REGIONS = ap-southeast-1 cn-hangzhou cn-beijing cn-shanghai cn-shenzhen
export REGION ?= cn-hangzhou
ifeq ($(filter $(REGION),$(VALID_REGIONS)),)
$(error Invalid REGION: $(REGION). Must be one of: $(VALID_REGIONS))
endif
VERSION ?= $(shell date "+%Y%m%d%H%M%S")
REGISTRY = cap-demo-public-registry.cn-hangzhou.cr.aliyuncs.com/cap-app
AGENT_IMAGE ?= $(REGISTRY)/image-generation-comfyui-agent-dev:$(VERSION)
COMFYUI_VERSION ?= v0.3.77
ifeq ($(COMFYUI_VERSION),v0.16.4)
CAP_SYSTEM_VERSION ?= 2.0.3
# 指纹只用裸系统版本号(不带 -vp 后缀),与存量实例 NAS 上记录的版本一致,
# 避免内置依赖指纹变化触发存量 ComfyUI 冷启动时重跑 install_all
BUILTIN_DEPENDENCY_VERSION ?= $(CAP_SYSTEM_VERSION)
else
CAP_SYSTEM_VERSION ?= 1.6.7
BUILTIN_DEPENDENCY_VERSION ?= $(CAP_SYSTEM_VERSION)
endif
AGENT_COMFYUI_IMAGE ?= cap-demo-public-registry.cn-hangzhou.cr.aliyuncs.com/aliyunfc/funart-comfyui:v$(CAP_SYSTEM_VERSION)
COMFYUI_LOCAL_IMAGE ?= comfyui:v$(CAP_SYSTEM_VERSION)-comfyui-$(COMFYUI_VERSION)
export OSS_BUCKET = dipper-cache-$(REGION)
WARMUP_REGIONS ?= cn-hangzhou cn-shenzhen cn-beijing cn-shanghai ap-southeast-1
# ————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
# 预发环境:构建推送 Agent dev 镜像 + 预热杭州
.PHONY: all
all:
@IMAGE="$(REGISTRY)/image-generation-comfyui-agent-dev:$(VERSION)"; \
echo "====== [Pre] Image: $$IMAGE ======"; \
$(MAKE) AGENT_IMAGE="$$IMAGE" login && \
$(MAKE) AGENT_IMAGE="$$IMAGE" build && \
$(MAKE) AGENT_IMAGE="$$IMAGE" push && \
$(MAKE) AGENT_IMAGE="$$IMAGE" WARMUP_REGIONS=cn-hangzhou warmup && \
echo "====== [Pre] Completed successfully ======" || \
{ echo "====== [Pre] Failed ======"; exit 1; }
# 生产环境:构建推送 Agent 生产镜像 + 预热全部 region(VERSION 必须指定为 git tag)
# make release VERSION=v1.4.0
.PHONY: release
release:
@if [ "$(origin VERSION)" = "file" ]; then \
echo "[ERROR] VERSION is required for production release. Usage: make release VERSION=v1.4.0"; \
exit 1; \
fi
@IMAGE="$(REGISTRY)/image-generation-comfyui-agent:$(VERSION)"; \
echo "====== [Prod] Image: $$IMAGE ======"; \
$(MAKE) AGENT_IMAGE="$$IMAGE" login && \
$(MAKE) AGENT_IMAGE="$$IMAGE" build && \
$(MAKE) AGENT_IMAGE="$$IMAGE" push && \
$(MAKE) AGENT_IMAGE="$$IMAGE" warmup && \
echo "====== [Prod] Completed successfully ======" || \
{ echo "====== [Prod] Failed ======"; exit 1; }
# ————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
# Agent镜像相关
# 镜像构建
.PHONY: build
build:
cd src/code/agent && docker build --platform linux/amd64 \
--build-arg COMFYUI_IMAGE=$(AGENT_COMFYUI_IMAGE) \
--build-arg BUILTIN_DEPENDENCY_VERSION=$(BUILTIN_DEPENDENCY_VERSION) \
-t $(AGENT_IMAGE) .
docker tag $(AGENT_IMAGE) agent
# 本地测试运行
.PHONY: run
run:
docker run -it --rm -p 9000:9000 $(AGENT_IMAGE)
# 本地测试登录
.PHONY: exec
exec:
docker run -it --rm -p 9000:9000 --entrypoint /bin/bash agent
# 登录镜像仓库
# CR_USER=xxx CR_PWD=xxx make login
.PHONY: login
login:
@if [ -z "$$CR_PWD" ]; then \
echo "No CR_PWD provided, using interactive login..."; \
docker login cap-demo-public-registry.cn-hangzhou.cr.aliyuncs.com; \
else \
echo "Using provided credentials for login..."; \
CR_USER=$${CR_USER:-xiliu@1767215449378635}; \
echo "$$CR_PWD" | docker login --username=$$CR_USER --password-stdin cap-demo-public-registry.cn-hangzhou.cr.aliyuncs.com; \
fi
# 推送镜像
.PHONY: push
push:
docker push $(AGENT_IMAGE)
# 部署到测试函数
.PHONY: deploy
deploy:
export WEBHOOK_URL="http://dipper-any-post-rwhuiqmhaf.cn-hangzhou.fcapp.run/post?uid=a&projectName=a&environmentName=a&serviceName=a&token=a" \
&& s deploy -t src/code/comfyui/s-dev-usemodel.yaml
# 镜像预热
# make warmup AGENT_IMAGE=<image> # warmup all default regions
# make warmup AGENT_IMAGE=<image> WARMUP_REGIONS=cn-hangzhou # warmup specific region
# make warmup AGENT_IMAGE=<image> WARMUP_REGIONS="cn-hangzhou cn-beijing" # warmup multiple regions
.PHONY: warmup
warmup:
@./warmup/warmup.sh "$(AGENT_IMAGE)" $(WARMUP_REGIONS)
# ————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
# ComfyUI 多版本构建
.PHONY: build-comfyui
build-comfyui:
@$(MAKE) -C src/code/comfyui/$(COMFYUI_VERSION) build
docker tag $(COMFYUI_LOCAL_IMAGE) $(AGENT_COMFYUI_IMAGE)
@$(MAKE) build \
COMFYUI_VERSION=$(COMFYUI_VERSION) \
AGENT_COMFYUI_IMAGE=$(AGENT_COMFYUI_IMAGE) \
BUILTIN_DEPENDENCY_VERSION=$(BUILTIN_DEPENDENCY_VERSION) \
AGENT_IMAGE=$(AGENT_IMAGE)
.PHONY: build-comfyui-v0.3.77
build-comfyui-v0.3.77:
@$(MAKE) build-comfyui COMFYUI_VERSION=v0.3.77
.PHONY: build-comfyui-v0.16.4
build-comfyui-v0.16.4:
@$(MAKE) build-comfyui COMFYUI_VERSION=v0.16.4
.PHONY: build-comfyui-all
build-comfyui-all: build-comfyui-v0.3.77 build-comfyui-v0.16.4
.PHONY: run-comfyui
run-comfyui:
@$(MAKE) -C src/code/comfyui/$(COMFYUI_VERSION) run
.PHONY: exec-comfyui
exec-comfyui:
@$(MAKE) -C src/code/comfyui/$(COMFYUI_VERSION) exec
.PHONY: pull-comfyui
pull-comfyui:
@$(MAKE) -C src/code/comfyui/$(COMFYUI_VERSION) pull
.PHONY: upload-comfyui-base
upload-comfyui-base:
@$(MAKE) -C src/code/comfyui/$(COMFYUI_VERSION) upload-base
# 根据已发布的snapshot构建comfyui生产镜像
# BUILD_ENV_SNAPSHOT_DIR=/mnt/cap-models/4a34adf1-4b55-5ee7-b997-9f0414bb30c8/snapshots/prod-20250609-092136
# make build-comfyui-from-snapshot
.PHONY: build-comfyui-from-snapshot
build-comfyui-from-snapshot: build
@$(MAKE) -C src/code/comfyui/$(COMFYUI_VERSION) build-from-snapshot
# ————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
.PHONY: build-sd
build-sd: build
@make -C src/code/sd build
.PHONY: run-sd
run-sd:
@make -C src/code/sd run
.PHONY: exec-sd
exec-sd:
@make -C src/code/sd exec
.PHONY: pull-sd
pull-sd:
@make -C src/code/sd pull
.PHONY: upload-sd-base
upload-sd-base:
@make -C src/code/sd upload-base