accounts/Makefile

218 lines
6.0 KiB
Makefile
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# =========================================
# 📦 XControl Account Service Makefile
# =========================================
APP_NAME := xcontrol-account
MAIN_FILE := ./cmd/accountsvc/main.go
PORT ?= 8080
OS := $(shell uname -s)
# Load local environment overrides if present.
-include .env
export
DB_NAME := account
DB_USER ?= $(or $(POSTGRES_USER),postgres)
DB_PASS ?= $(or $(POSTGRES_PASSWORD),password)
DB_HOST := 127.0.0.1
DB_PORT := 15432
DB_URL := postgres://$(DB_USER):$(DB_PASS)@$(DB_HOST):$(DB_PORT)/$(DB_NAME)?sslmode=disable
REPLICATION_MODE ?= pgsync
DB_ADMIN_USER ?= $(DB_USER)
DB_ADMIN_PASS ?= $(DB_PASS)
GCP_PROJECT ?=
GCP_REGION ?= asia-northeast1
CLOUD_RUN_SERVICE ?= accounts-svc-plus
CLOUD_RUN_SERVICE_YAML ?= deploy/gcp/cloud-run/service.yaml
CLOUD_RUN_STUNNEL_CONF ?= deploy/gcp/cloud-run/stunnel.conf
CLOUD_RUN_IMAGE ?= $(GCP_REGION)-docker.pkg.dev/$(GCP_PROJECT)/cloud-run-source-deploy/accounts.svc.plus/accounts-svc-plus:latest
SCHEMA_FILE := ./sql/schema.sql
PGLOGICAL_INIT_FILE := ./sql/schema_pglogical_init.sql
PGLOGICAL_PATCH_FILE := ./sql/schema_pglogical_patch.sql
PGLOGICAL_REGION_FILE := ./sql/schema_pglogical_region.sql
ACCOUNT_EXPORT_FILE ?= account-export.yaml
ACCOUNT_IMPORT_FILE ?= account-export.yaml
ACCOUNT_EMAIL_KEYWORD ?=
ACCOUNT_SYNC_CONFIG ?= config/sync.yaml
SUPERADMIN_USERNAME ?= Admin
SUPERADMIN_PASSWORD ?= ChangeMe
SUPERADMIN_EMAIL ?= admin@svc.plus
export PATH := /usr/local/go/bin:$(PATH)
export APP_NAME MAIN_FILE PORT OS \
DB_NAME DB_USER DB_PASS DB_HOST DB_PORT DB_URL \
REPLICATION_MODE DB_ADMIN_USER DB_ADMIN_PASS \
GCP_PROJECT GCP_REGION CLOUD_RUN_SERVICE CLOUD_RUN_SERVICE_YAML CLOUD_RUN_STUNNEL_CONF CLOUD_RUN_IMAGE \
SCHEMA_FILE PGLOGICAL_INIT_FILE PGLOGICAL_PATCH_FILE PGLOGICAL_REGION_FILE \
ACCOUNT_EXPORT_FILE ACCOUNT_IMPORT_FILE ACCOUNT_EMAIL_KEYWORD ACCOUNT_SYNC_CONFIG \
SUPERADMIN_USERNAME SUPERADMIN_PASSWORD SUPERADMIN_EMAIL \
ACCOUNT_IMPORT_MERGE ACCOUNT_IMPORT_MERGE_STRATEGY ACCOUNT_IMPORT_DRY_RUN \
ACCOUNT_IMPORT_MERGE_ALLOWLIST ACCOUNT_IMPORT_EXTRA_FLAGS
# =========================================
# 🧩 基础命令
# =========================================
.PHONY: all init build clean start stop restart dev test help integration-test \
init-go init-db init-db-core init-db-replication init-db-pglogical \
stunnel-start \
reinit-pglogical account-sync-push account-sync-pull account-sync-mirror create-db-user db-reset \
cloudrun-build cloudrun-deploy cloudrun-stunnel
all: build
help:
@echo "🧭 XControl Account Service Makefile"
@echo "make init 初始化 Go 环境与数据库"
@echo "make init-db 执行数据库 schema支持 REPLICATION_MODE=pgsync|pglogical"
@echo "make create-db-user 创建数据库用户并授权"
@echo "make db-reset 重置整个 PostgreSQL 集群 (危险操作!)"
@echo "make migrate-db 执行数据库迁移"
@echo "make dump-schema 导出数据库 schema"
@echo "make account-export 导出账号数据为 YAML"
@echo "make account-import 从 YAML 导入账号数据"
@echo "make create-super-admin 创建超级管理员"
@echo "make reinit-db 重置业务 schema (不涉及 pglogical)"
@echo "make reinit-pglogical 重新初始化 pglogical schema"
@echo "make dev 热重载开发模式"
@echo "make clean 清理构建产物"
@echo "make integration-test 运行集成测试用例(初始化 + 创建管理员)"
@echo "make cloudrun-build 构建并推送 Cloud Run 镜像"
@echo "make cloudrun-deploy 部署 Cloud Run Service"
@echo "make cloudrun-stunnel 更新 Cloud Run stunnel 配置 secret"
# =========================================
# 🧰 初始化
# =========================================
init: init-go init-db
init-go:
@bash scripts/init-go.sh
init-db:
@bash scripts/init-db.sh
init-db-core:
@bash scripts/init-db-core.sh
init-db-replication:
@bash scripts/init-db-replication.sh
init-db-pglogical:
@bash scripts/init-db-pglogical.sh
# =========================================
# 🧠 PGLogical 双节点初始化
# =========================================
init-pglogical-region:
@bash scripts/init-pglogical-region.sh
init-pglogical-region-cn:
@bash scripts/init-pglogical-region-cn.sh
init-pglogical-region-global:
@bash scripts/init-pglogical-region-global.sh
# =========================================
# 📦 数据库迁移与管理
# =========================================
create-db-user:
@bash scripts/create-db-user.sh
migrate-db:
@bash scripts/migrate-db.sh
dump-schema:
@bash scripts/dump-schema.sh
db-reset:
@bash scripts/db-reset.sh
drop-db:
@bash scripts/drop-db.sh
reset-public-schema:
@bash scripts/reset-public-schema.sh
reinit-db:
@bash scripts/reinit-db.sh
reinit-pglogical:
@bash scripts/reinit-pglogical.sh
stunnel-start:
@bash scripts/stunnel-start.sh
# =========================================
# 💾 账号导入导出
# =========================================
account-export:
@bash scripts/account-export.sh
account-import:
@bash scripts/account-import.sh
account-sync-push:
@bash scripts/account-sync-push.sh
account-sync-pull:
@bash scripts/account-sync-pull.sh
account-sync-mirror:
@bash scripts/account-sync-mirror.sh
create-super-admin:
@bash scripts/create-super-admin.sh
integration-test:
@bash tests/e2e/superadmin-login/run-test-scripts.sh
# =========================================
# ⚙️ 编译与运行
# =========================================
build: init-go
@bash scripts/build.sh
upgrade: build
@bash scripts/upgrade.sh
start: build
@bash scripts/start.sh
stop:
@bash scripts/stop.sh
restart: stop start
test:
@bash scripts/test.sh
clean:
@bash scripts/clean.sh
dev:
@bash scripts/dev.sh
# =========================================
# ☁️ GCP Cloud Run
# =========================================
cloudrun-build:
@bash scripts/cloudrun-build.sh
cloudrun-deploy:
@bash scripts/cloudrun-deploy.sh
cloudrun-stunnel:
@bash scripts/cloudrun-stunnel.sh