加部署前代码门禁: scripts/check.sh + deploy-prod.sh 接入
单人维护 + Gitea 无 runner, CI 文件无执行环境。改用部署时刻门禁: deploy-prod.sh 构建镜像前在本地调 check.sh 跑全量检查, 失败即中止部署。 scripts/check.sh (新增): - 后端: go vet + go build + go test (串行 -p 1 避免 SQLite 并发) - 前端: npm run check (prettier + eslint --max-warnings=0 + vue-tsc) + npm run build - 支持 --skip-backend/--skip-frontend/--skip-tests 局部调试 - 每步报耗时, 任一失败退出非零 deploy-prod.sh 接入: - 构建镜像前 (NO_BUILD=0) 自动调 check.sh, 失败中止部署 - 本地缺 go/npm 时跳过并告警 (部署机可能只有 docker), 不硬失败 - --skip-check 显式跳过 (不推荐) README 补 "代码门禁" 章节。 验证: 全量 check.sh 跑通 (~46s, 5 步全绿); 临时注入 lint 错误确认能拦住。
This commit is contained in:
@@ -63,6 +63,7 @@ show_help() {
|
||||
--no-migrate 不执行数据库迁移
|
||||
--reset-db 重置数据库(删除并重建)
|
||||
--logs 部署完成后跟随查看后端日志
|
||||
--skip-check 跳过部署前代码门禁(不推荐)
|
||||
-h, --help 显示帮助信息
|
||||
|
||||
环境变量:
|
||||
@@ -85,6 +86,7 @@ NO_BUILD=0
|
||||
NO_MIGRATE=0
|
||||
RESET_DB=0
|
||||
FOLLOW_LOGS=0
|
||||
SKIP_CHECK=0
|
||||
|
||||
while [[ $# -gt 0 ]]; do
|
||||
case "$1" in
|
||||
@@ -104,6 +106,10 @@ while [[ $# -gt 0 ]]; do
|
||||
FOLLOW_LOGS=1
|
||||
shift
|
||||
;;
|
||||
--skip-check)
|
||||
SKIP_CHECK=1
|
||||
shift
|
||||
;;
|
||||
-h|--help)
|
||||
show_help
|
||||
exit 0
|
||||
@@ -324,6 +330,20 @@ main() {
|
||||
log "检查 Docker Compose 配置..."
|
||||
compose config >/dev/null
|
||||
|
||||
# 部署前代码门禁:本地有 go + node 时跑全量检查,挡住未通过的提交进镜像。
|
||||
# 部署机无 go/node 或 --skip-check 时跳过并告警,不阻断(避免环境耦合)。
|
||||
if [[ "${NO_BUILD}" == "0" && "${SKIP_CHECK}" == "0" ]]; then
|
||||
if command -v go >/dev/null 2>&1 && command -v npm >/dev/null 2>&1; then
|
||||
log "执行部署前代码门禁 (scripts/check.sh)..."
|
||||
if ! bash "${ROOT_DIR}/scripts/check.sh"; then
|
||||
log_error "代码门禁未通过,已中止部署。确认修复后重试,或用 --skip-check 强制跳过。"
|
||||
exit 1
|
||||
fi
|
||||
else
|
||||
log_warn "本地缺少 go 或 npm,跳过代码门禁。建议在开发机执行 ./scripts/check.sh 后再部署。"
|
||||
fi
|
||||
fi
|
||||
|
||||
if [[ "${NO_BUILD}" == "1" ]]; then
|
||||
log "启动生产服务..."
|
||||
compose up -d
|
||||
|
||||
Reference in New Issue
Block a user