4667de2
# GitData 本地开发入口(Windows / macOS / Linux)。
#
# Windows:直接在 Windows 上跑 Rust/前端,依赖服务(PostgreSQL / Redis / RustFS)
# 由 WSL(Ubuntu) 的 systemd 托管(just infra)。
# macOS/Linux:原生跑 Rust/前端,依赖服务由 docker compose 托管(just infra)。
#
# 配置沿用 config/local/(gitignore)。首次使用:
# just check -> just infra -> just build -> just up
# 常用:just up / just down / just status / just tail apihost
#
# 二进制目录跟随 cargo 的 CARGO_TARGET_DIR(just build 与 just up 一致读同一个变量):
# CARGO_TARGET_DIR=/tmp/app just up
# 日志 / pid / 本地 git 仓库仍固定在 target/dev,不随 CARGO_TARGET_DIR 搬家。
#
# 依赖工具:cargo、ssh-keygen;Windows 额外需要 WSL 的 Ubuntu 发行版,
# macOS/Linux 额外需要 docker + docker compose。
# 需要 just >= 1.21。
set shell := ["bash", "-cu"]
set windows-shell := ["powershell.exe", "-NoLogo", "-NoProfile", "-Command"]
root := justfile_directory()
dev := if os() == "windows" {
root + "\\scripts\\dev.ps1"
} else {
root + "/scripts/dev.sh"
}
# PowerShell 调用脚本需要 & 前缀;POSIX shell 直接执行
invoke := if os() == "windows" { "& " } else { "" }
# 查看服务状态(默认)
status:
@{{ invoke }}"{{ dev }}" status
# 自检:工具链 / 依赖服务 / 后端二进制
check:
@{{ invoke }}"{{ dev }}" check
# 启动依赖服务:PostgreSQL / Redis / RustFS(S3)
infra:
@{{ invoke }}"{{ dev }}" infra
# 停止依赖服务
infra-down:
@{{ invoke }}"{{ dev }}" infra-down
# 同步数据库 schema
migrate:
@{{ invoke }}"{{ dev }}" migrate
# 事件系统(socket.io 通道 + RocketMQ 消费 + 内部 RPC)
# 需要 Redis;single/consumer 模式还依赖 RocketMQ,RPC 依赖 apihost 已启动。
event mode="single":
@cargo run -p app -- event --mode {{mode}}
# 只跑 socket 节点(不消费 MQ)
event-actor:
@cargo run -p app -- event --mode actor
# 只跑 RocketMQ 消费节点
event-consumer:
@cargo run -p app -- event --mode consumer
# 构建全部后端二进制
# 遵循 CARGO_TARGET_DIR;just up 从同一目录取二进制。
build:
@cargo build --bins
# 构建全部后端 release 二进制
build-release:
@cargo build --release --bins
# 启动全部服务(后端)
# 二进制目录 = $CARGO_TARGET_DIR/debug(未设置则 target/debug)。
up *svc='':
@{{ invoke }}"{{ dev }}" up {{ svc }}
# 仅启动后端服务(apihost)
up-backend:
@{{ invoke }}"{{ dev }}" up backends
# 停止全部服务,或指定:just down apihost
down *svc='':
@{{ invoke }}"{{ dev }}" down {{ svc }}
# 重启全部服务,或指定:just restart apihost
restart *svc='':
@{{ invoke }}"{{ dev }}" restart {{ svc }}
# 最近日志:just logs / just logs apihost
logs *svc="apihost":
@{{ invoke }}"{{ dev }}" logs {{ svc }}
# 跟踪日志:just tail / just tail apihost
tail svc="apihost":
@{{ invoke }}"{{ dev }}" logs {{ svc }} -f
# 进入 PostgreSQL 交互终端
psql:
@{{ invoke }}"{{ dev }}" psql
# 进入 redis-cli 交互终端
redis:
@{{ invoke }}"{{ dev }}" redis
# URL 速查
urls:
@echo " app http://127.0.0.1:7051 (Swagger: /api/docs)"
@echo " event ws://127.0.0.1:7031/socket.io rpc: 127.0.0.1:7032"
@echo " apihost-rpc 127.0.0.1:7052 (internal.v1)"
# 重新生成 openapi.json 与 packages/apiclient 客户端
openapi:
@cargo run -p app -- openapi && pnpm exec orval
# 校验 openapi 与 packages/apiclient 是否都与源码一致
openapi-check:
@bash scripts/contract-check.sh
# cargo fmt --all
fmt:
@cargo fmt --all
# cargo clippy 全 workspace
clippy:
@cargo clippy --workspace --all-targets --all-features
# 清理构建产物
clean:
@cargo clean
# 登录前端随 app 发布。
identity-web-build:
pnpm install --frozen-lockfile && pnpm build
identity-web-dev:
pnpm dev