91 lines
3.1 KiB
Makefile
91 lines
3.1 KiB
Makefile
# Makefile for panel-web
|
|
|
|
# Docker Registry
|
|
REGISTRY_URL=registry.kxsw.us
|
|
|
|
# Image names
|
|
ADMIN_IMAGE_NAME=ppanel/ppanel-admin-web
|
|
USER_IMAGE_NAME=ppanel/ppanel-user-web
|
|
|
|
# Full image names with registry
|
|
ADMIN_IMAGE=${REGISTRY_URL}/${ADMIN_IMAGE_NAME}
|
|
USER_IMAGE=${REGISTRY_URL}/${USER_IMAGE_NAME}
|
|
|
|
# Version from package.json. Requires jq to be installed.
|
|
VERSION=$(shell jq -r .version package.json)
|
|
|
|
.PHONY: all
|
|
all: build ## Default target
|
|
|
|
# ==============================================================================
|
|
# Build Targets
|
|
# ==============================================================================
|
|
|
|
.PHONY: build
|
|
build: build-admin build-user ## Build both admin and user docker images
|
|
|
|
.PHONY: build-admin
|
|
build-admin: ## Build the admin docker image
|
|
@echo "Building admin image with tags ${ADMIN_IMAGE}:${VERSION} and ${ADMIN_IMAGE}:latest..."
|
|
docker build -f ./docker/ppanel-admin-web/Dockerfile -t ${ADMIN_IMAGE}:${VERSION} -t ${ADMIN_IMAGE}:latest .
|
|
@echo "Successfully built admin image."
|
|
|
|
.PHONY: build-user
|
|
build-user: ## Build the user docker image
|
|
@echo "Building user image with tags ${USER_IMAGE}:${VERSION} and ${USER_IMAGE}:latest..."
|
|
docker build -f ./docker/ppanel-user-web/Dockerfile -t ${USER_IMAGE}:${VERSION} -t ${USER_IMAGE}:latest .
|
|
@echo "Successfully built user image."
|
|
|
|
|
|
# ==============================================================================
|
|
# Publish Targets
|
|
# ==============================================================================
|
|
|
|
.PHONY: push
|
|
push: push-admin push-user ## Push both admin and user images to the registry
|
|
|
|
.PHONY: push-admin
|
|
push-admin: ## Push the admin image to the registry
|
|
@echo "Pushing admin image ${ADMIN_IMAGE}:${VERSION} and ${ADMIN_IMAGE}:latest..."
|
|
docker push ${ADMIN_IMAGE}:${VERSION}
|
|
docker push ${ADMIN_IMAGE}:latest
|
|
@echo "Successfully pushed admin image."
|
|
|
|
.PHONY: push-user
|
|
push-user: ## Push the user image to the registry
|
|
@echo "Pushing user image ${USER_IMAGE}:${VERSION} and ${USER_IMAGE}:latest..."
|
|
docker push ${USER_IMAGE}:${VERSION}
|
|
docker push ${USER_IMAGE}:latest
|
|
@echo "Successfully pushed user image."
|
|
|
|
|
|
# ==============================================================================
|
|
# Run Targets
|
|
# ==============================================================================
|
|
|
|
.PHONY: ensure-version
|
|
ensure-version:
|
|
@if [ -z "${VERSION}" ] || [ "${VERSION}" = "null" ]; then \
|
|
echo "ERROR: 未检测到版本号。请安装 jq 并在 panel-web/package.json 中设置有效的 version 字段。"; \
|
|
echo "提示:可以运行 'make version' 查看当前版本值。"; \
|
|
exit 1; \
|
|
fi
|
|
|
|
# ==============================================================================
|
|
# Other Targets
|
|
# ==============================================================================
|
|
|
|
.PHONY: login
|
|
login: ## Login to the Docker registry
|
|
docker login ${REGISTRY_URL}
|
|
|
|
.PHONY: help
|
|
help: ## Show this help message
|
|
@echo "Usage: make [target]"
|
|
@echo ""
|
|
@echo "Targets:"
|
|
@grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-20s\033[0m %s\n", $$1, $$2}'
|
|
|
|
.PHONY: version
|
|
version: ## Print project version from package.json
|
|
@echo "${VERSION}"
|