feat: add skill init/check and isolate builder makefile
Give ack, builder, and deployer an explicit init/check mode that reports missing project config instead of failing mid-work. Point builder at makefile.builder so its contract targets do not collide with an existing Makefile.
This commit is contained in:
@@ -0,0 +1,60 @@
|
||||
# Builder 契约文件。放到项目根,用 `make -f makefile.builder <target>`。
|
||||
# 不要把这些目标写进用户的 Makefile / makefile。
|
||||
# 初始化时按项目轨道删掉未使用的 deb / docker 段。
|
||||
# 把 build 的 TODO 换成真实编译命令;禁止在 build / deb / docker 里上传。
|
||||
#
|
||||
# include 路径见 references/contract.md。测试或非标准安装可设 BUILDER_SKILL_DIR。
|
||||
|
||||
ARCH ?= amd64
|
||||
ifneq ($(filter $(ARCH),amd64 arm64),$(ARCH))
|
||||
$(error ARCH must be amd64 or arm64)
|
||||
endif
|
||||
|
||||
PROJECT_NAME ?= $(notdir $(CURDIR))
|
||||
DIST_DIR ?= dist
|
||||
|
||||
ifneq ($(BUILDER_SKILL_DIR),)
|
||||
include $(BUILDER_SKILL_DIR)/scripts/version.mk
|
||||
else
|
||||
include $(HOME)/.pouch/skills/builder/scripts/version.mk
|
||||
endif
|
||||
|
||||
BUILDER_SCRIPTS := $(or $(BUILDER_SKILL_DIR),$(HOME)/.pouch/skills/builder)/scripts
|
||||
|
||||
.PHONY: help version clean build deb docker push push-deb push-docker
|
||||
|
||||
help:
|
||||
@echo "$(PROJECT_NAME) $(VERSION)"
|
||||
@echo " make -f makefile.builder build [ARCH=amd64|arm64] - 构建主产物 / build"
|
||||
@echo " make -f makefile.builder version - 打印规范版本 / canonical version"
|
||||
@echo " make -f makefile.builder clean - 删除 $(DIST_DIR)"
|
||||
@echo " make -f makefile.builder deb - 打 DEB(只构建不上传)"
|
||||
@echo " make -f makefile.builder docker - 本地单平台镜像"
|
||||
@echo " make -f makefile.builder push / push-deb / push-docker"
|
||||
|
||||
version:
|
||||
@echo $(VERSION)
|
||||
|
||||
clean:
|
||||
rm -rf $(DIST_DIR)
|
||||
|
||||
# 替换为项目真实构建命令。不得 curl/scp/docker push。
|
||||
build:
|
||||
mkdir -p $(DIST_DIR)
|
||||
@echo "TODO: build $(PROJECT_NAME) for linux/$(ARCH)"
|
||||
|
||||
deb: build
|
||||
mkdir -p $(DIST_DIR)
|
||||
dpkg-deb --build packaging $(DIST_DIR)/$(PROJECT_NAME)_$(VERSION)_$(ARCH).deb
|
||||
|
||||
docker:
|
||||
docker build --platform=linux/$(ARCH) -t $(PROJECT_NAME):$(IMAGE_TAG) .
|
||||
|
||||
push-deb:
|
||||
$(BUILDER_SCRIPTS)/upload_deb.sh $(DIST_DIR)/$(PROJECT_NAME)_$(VERSION)_$(ARCH).deb
|
||||
|
||||
push-docker:
|
||||
$(BUILDER_SCRIPTS)/publish_docker.sh
|
||||
|
||||
# 单产物项目只保留一条 push。双产物改为:push: push-deb push-docker
|
||||
push: push-deb
|
||||
Reference in New Issue
Block a user