96 lines
2.9 KiB
Makefile
96 lines
2.9 KiB
Makefile
# 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
|