218 lines
6.0 KiB
Makefile
218 lines
6.0 KiB
Makefile
# =========================================
|
||
# 📦 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
|