# Load local secrets/config when present; .env is ignored by Git. -include .env REGISTRY ?= git.ipao.vip IMAGE_REPOSITORY ?= rogee/wxapp-guantong IMAGE_NAME ?= $(REGISTRY)/$(IMAGE_REPOSITORY) IMAGE_TAG ?= latest IMAGE ?= $(IMAGE_NAME):$(IMAGE_TAG) DEPLOY_HOST ?= server.gaozong.ali DEPLOY_DIR ?= dist DEPLOY_ARCHIVE ?= $(DEPLOY_DIR)/$(subst /,_,$(IMAGE_NAME))-$(IMAGE_TAG).tar.gz DEPLOY_REMOTE_ARCHIVE ?= /tmp/$(notdir $(DEPLOY_ARCHIVE)) DOCKERFILE ?= backend/Dockerfile BUILD_CONTEXT ?= backend PLATFORM ?= linux/amd64 DOCKER_REGISTRY ?= docker.m.daocloud.io ALPINE_MIRROR ?= mirrors.aliyun.com GOPROXY ?= https://goproxy.cn,direct GOSUMDB ?= sum.golang.google.cn MINIPROGRAM_CI ?= miniprogram-ci MINIPROGRAM_PATH ?= uniapp/unpackage/dist/build/mp-weixin MINIPROGRAM_NORMALIZER ?= scripts/normalize-miniprogram-paths.py WECHAT_APPID ?= $(or $(APP_ID),wx0a0e45ada30f01d4) WECHAT_PRIVATE_KEY ?= $(HOME)/.secrets/wechat/private.$(WECHAT_APPID).key WECHAT_VERSION ?= auto WECHAT_VERSION_FALLBACK ?= 1.0.2 # ponytail: local state; override WECHAT_VERSION when another machine uploads. WECHAT_VERSION_STATE ?= .cache/wechat-version WECHAT_VERSION_SCRIPT ?= scripts/wechat-next-version.mjs WECHAT_ROBOT ?= 1 export WECHAT_APPID WECHAT_VERSION_FALLBACK WECHAT_UPLOAD_DESCRIPTION ?= 骨安通生产版本 .PHONY: docker-build docker-push docker-release miniapp-normalize miniapp-upload deploy compose-up compose-down docker-build: docker build \ --platform $(PLATFORM) \ --build-arg DOCKER_REGISTRY=$(DOCKER_REGISTRY) \ --build-arg ALPINE_MIRROR=$(ALPINE_MIRROR) \ --build-arg GOPROXY=$(GOPROXY) \ --build-arg GOSUMDB=$(GOSUMDB) \ -t $(IMAGE) \ -f $(DOCKERFILE) \ $(BUILD_CONTEXT) docker-push: docker push $(IMAGE) docker-release: docker-build docker-push miniapp-normalize: python3 "$(MINIPROGRAM_NORMALIZER)" "$(MINIPROGRAM_PATH)" miniapp-upload: miniapp-normalize test -f "$(WECHAT_PRIVATE_KEY)" test -f "$(MINIPROGRAM_PATH)/project.config.json" @set -eu; \ if [ "$(WECHAT_VERSION)" = "auto" ]; then \ if [ -s "$(WECHAT_VERSION_STATE)" ]; then \ current="$$(cat "$(WECHAT_VERSION_STATE)")"; \ version="$$(node "$(WECHAT_VERSION_SCRIPT)" "$$current")"; \ else \ version="$(WECHAT_VERSION_FALLBACK)"; \ fi; \ else \ version="$(WECHAT_VERSION)"; \ fi; \ printf '上传小程序版本: %s\n' "$$version"; \ $(MINIPROGRAM_CI) upload \ --pp "$(MINIPROGRAM_PATH)" \ --pkp "$(WECHAT_PRIVATE_KEY)" \ --appid "$(WECHAT_APPID)" \ --uv "$$version" \ --ud "$(WECHAT_UPLOAD_DESCRIPTION)" \ -r "$(WECHAT_ROBOT)"; \ mkdir -p "$$(dirname "$(WECHAT_VERSION_STATE)")"; \ printf '%s\n' "$$version" > "$(WECHAT_VERSION_STATE)" deploy: docker-build mkdir -p $(DEPLOY_DIR) docker save $(IMAGE) | gzip > $(DEPLOY_ARCHIVE) scp $(DEPLOY_ARCHIVE) $(DEPLOY_HOST):$(DEPLOY_REMOTE_ARCHIVE) ssh $(DEPLOY_HOST) 'docker load -i $(DEPLOY_REMOTE_ARCHIVE) && rm -f $(DEPLOY_REMOTE_ARCHIVE)' compose-up: GUAHAO_IMAGE="$(IMAGE)" docker compose up -d compose-down: docker compose down