Commit 7bb06c11 authored by BO ZHANG's avatar BO ZHANG 🏀
Browse files

docs(Makefile): 更新文档并增强make clean功能

parent 54eade7a
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -16,8 +16,11 @@ export HARBOR_PROJECT=harbor.csst.nao:10443/csst/

make build
make push
make clean
```

说明:`make clean` 会清理本次构建的业务镜像、dangling images、builder cache,以及其他未使用镜像;适合在推送完成后回收本地磁盘空间。

部署/更新集群(`ENV` 用于选择 `deploy_configs/<env>/inventory.ini`):

```bash
@@ -73,6 +76,7 @@ make help
make pull
make build
make push
make clean
make all
```

@@ -95,6 +99,7 @@ make ansible-down
说明:
- `make pull` 只负责从 `required-images.txt` 拉取第三方镜像,不依赖 `BUILD_NUMBER/HARBOR_PROJECT`
- `make push` 会把镜像推送到仓库,镜像 tag 使用 `BUILD_NUMBER`(默认 `latest`)。
- `make clean` 会统一清理本地构建镜像、dangling images、builder cache,以及其他未使用镜像。
- `make ansible-*` 主要依赖 `ENV` 选择 inventory;同时会把 `BUILD_NUMBER`(镜像 tag,默认 `latest`)与 `HARBOR_PROJECT`(可选,镜像仓库前缀,如 `harbor.csst.nao:10443/csst/`)作为 Ansible extra vars 传入,用于决定 docker compose 使用的镜像 tag/前缀。

底层执行的命令形式为:
+12 −5
Original line number Diff line number Diff line
@@ -3,6 +3,7 @@
BUILD_NUMBER ?= latest
HARBOR_PROJECT ?= 
SKIP_JS9 ?= 1
DOCKER_BUILD_PROGRESS ?= plain
PIP_INDEX_URL ?= https://pypi.tuna.tsinghua.edu.cn/simple/
PIP_EXTRA_INDEX_URL ?= https://mirrors.bfsu.edu.cn/pypi/web/simple
PIP_TRUSTED_HOST ?=
@@ -29,6 +30,7 @@ ANSIBLE_EXTRA_VARS += -e harbor_project=$(HARBOR_PROJECT)
endif

API_GATEWAY_BUILD_ARGS := --build-arg PIP_DEFAULT_TIMEOUT=$(PIP_DEFAULT_TIMEOUT) --build-arg PIP_RETRIES=$(PIP_RETRIES)
DOCKER_BUILD_FLAGS := --pull --no-cache --progress=$(DOCKER_BUILD_PROGRESS)
ifneq ($(strip $(PIP_INDEX_URL)),)
API_GATEWAY_BUILD_ARGS += --build-arg PIP_INDEX_URL=$(PIP_INDEX_URL)
endif
@@ -48,7 +50,7 @@ help:
	@echo "  make pull	- Pull all required official third-party images"
	@echo "  make build       - Pull, retag third-party images, and build custom images"
	@echo "  make push	- Push all prepared images to the specified Harbor registry"
	@echo "  make clean       - Remove all custom built images (Airflow, API Gateway, Portal)"
	@echo "  make clean       - Remove custom images, unused images, and build cache"
	@echo "  make build SKIP_JS9=0 - Build with JS9 image (optional)"
	@echo "  make viewer-test - Build and run js9-service locally with ../data mounted (optional)"
	@echo "  make all	 - Execute clean, pull, build, and push sequentially"
@@ -98,7 +100,7 @@ build:
		count=$$((count+1)); \
	done; \
	echo "[$$(($$total+1))/$${total_imgs}] Building Airflow Custom Image ($(TARGET_AIRFLOW))..."; \
	docker build --pull --no-cache -q -t $(TARGET_AIRFLOW) .; \
	docker build $(DOCKER_BUILD_FLAGS) -t $(TARGET_AIRFLOW) .; \
	echo "[$$(($$total+2))/$${total_imgs}] Building API Gateway Image ($(TARGET_API_GATEWAY))..."; \
		if [ -d "../external/csst-dfs-client" ]; then \
				mkdir -p ./api_gateway/csst-dfs-client; \
@@ -108,16 +110,16 @@ build:
				mkdir -p ./api_gateway/ccds; \
				rsync -a --delete --exclude ".git" --exclude "__pycache__" ../external/ccds/ ./api_gateway/ccds/; \
		fi; \
	docker build --pull --no-cache -q $(API_GATEWAY_BUILD_ARGS) -t $(TARGET_API_GATEWAY) ./api_gateway; \
	docker build $(DOCKER_BUILD_FLAGS) $(API_GATEWAY_BUILD_ARGS) -t $(TARGET_API_GATEWAY) ./api_gateway; \
	echo "[$$(($$total+3))/$${total_imgs}] Building Task Portal Image ($(TARGET_TASK_PORTAL)) with BUILD_NUMBER=$(BUILD_NUMBER)..."; \
	docker build --pull --no-cache -q --build-arg VITE_BUILD_NUMBER=$(BUILD_NUMBER) --build-arg VITE_BUILD_TIME="$(shell date '+%Y-%m-%d %H:%M:%S')" -t $(TARGET_TASK_PORTAL) ./frontend_vue; \
	docker build $(DOCKER_BUILD_FLAGS) --build-arg VITE_BUILD_NUMBER=$(BUILD_NUMBER) --build-arg VITE_BUILD_TIME="$(shell date '+%Y-%m-%d %H:%M:%S')" -t $(TARGET_TASK_PORTAL) ./frontend_vue; \
	if [ "$(SKIP_JS9)" != "1" ]; then \
		echo "[$$(($$total+4))/$${total_imgs}] Building JS9 Image ($(TARGET_JS9))..."; \
		if [ -d "../external/js9" ]; then \
				mkdir -p ./external/js9; \
				rsync -a --delete --exclude ".git" --exclude "__pycache__" ../external/js9/ ./external/js9/; \
		fi; \
		docker build --pull --no-cache -q -t $(TARGET_JS9) -f ./js9_service/Dockerfile .; \
		docker build $(DOCKER_BUILD_FLAGS) -t $(TARGET_JS9) -f ./js9_service/Dockerfile .; \
	fi; \
	echo "All $${total_imgs} images prepared successfully."

@@ -149,6 +151,11 @@ all: clean pull build push
clean:
	@echo "Cleaning up custom-built images..."
	@docker images | grep -E 'csst-airflow|api-gateway|task-portal|js9' | awk '{print $$3}' | xargs -r docker rmi -f || true
	@echo "Cleaning dangling docker images and build cache..."
	@docker image prune -f >/dev/null 2>&1 || true
	@docker builder prune -f >/dev/null 2>&1 || true
	@echo "Cleaning other unused docker images..."
	@docker image prune -af || true
	@echo "Clean completed."

viewer-test: