Files
xiaoxia-saas/scripts/ci/step_frontend_install.sh
T
xiaoxia 56281fae77
CI/CD Pipeline / Check if frontend-only change (pull_request) Failing after 0s
CI/CD Pipeline / Frontend Lint (pull_request) Failing after 0s
CI/CD Pipeline / Build Staging Web Image (pull_request) Has been skipped
CI/CD Pipeline / Build Staging API Image (pull_request) Has been skipped
CI/CD Pipeline / Build Staging Worker Image (pull_request) Has been skipped
PR Automation / Auto Merge on CI Green + Approved (pull_request) Failing after 0s
PR Automation / Auto Approve on CI Green (pull_request) Failing after 0s
CI/CD Pipeline / Validate Code Quality And Tests (pull_request) Failing after 0s
CI/CD Pipeline / Frontend Unit Tests (pull_request) Failing after 0s
CI/CD Pipeline / Unit Tests (pull_request) Failing after 0s
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (pull_request) Has been skipped
CI/CD Pipeline / Build Production API Image (pull_request) Has been skipped
CI/CD Pipeline / Build Production Worker Image (pull_request) Has been skipped
CI/CD Pipeline / ACR Image Cleanup (pull_request) Has been skipped
CI/CD Pipeline / Staging E2E Tests (pull_request) Has been skipped
CI/CD Pipeline / Staging API Integration Tests (pull_request) Has been skipped
CI/CD Pipeline / Build Production Web Image (pull_request) Has been skipped
CI/CD Pipeline / Integration Tests (pull_request) Failing after 0s
CI/CD Pipeline / Deploy Production (pull_request) Has been skipped
CI/CD Pipeline / Production Browser E2E (pull_request) Has been skipped
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 37s
AI Code Review / AI Code Review (pull_request) Successful in 1m41s
ci: 架构精简 - 合并4个workflow为2个,抽取公共步骤为脚本
#603 CI架构精简:
- 合并 ci-cd.yml + ci-build.yml → ci-pipeline.yml(14个job统一pipeline)
- 合并 auto-approve.yml + auto-merge.yml → pr-automation.yml(2个job并行)
- 抽取公共步骤为shell脚本:checkout/timer/ffmpeg/frontend_install/frontend_run
- 抽取大job主逻辑为脚本:run_validate/run_unit_tests/run_integration_tests
- workflow name保持 CI/CD Pipeline 不变,确保status check context兼容
- job name全部与原文件一致,不影响分支保护门禁和auto-merge
- YAML代码量减少30%+,所有功能100%保留,CI速度不受影响
2026-07-19 18:29:20 +08:00

47 lines
1.5 KiB
Bash
Executable File

#!/bin/sh
# CI 公共步骤:前端依赖安装(在 docker node 容器中运行,带缓存)
# 用法:step_frontend_install.sh [模式]
# 模式: full (默认) - 完整安装所有依赖
# vitest - 仅安装vitest相关依赖(用于轻量单测job)
set -eu
MODE="${1:-full}"
NPM_CACHE_VOLUME="xiaoxia-npm-cache"
echo "=== 前端依赖安装开始 (模式: $MODE) ==="
# 确保缓存卷存在
docker volume create "$NPM_CACHE_VOLUME" > /dev/null 2>&1 || true
if [ "$MODE" = "vitest" ]; then
# 轻量模式:检查缓存中是否已有node_modules,有则跳过npm ci
echo "检查 vitest 依赖缓存..."
HAS_CACHE=$(docker run --rm \
-v "$NPM_CACHE_VOLUME:/cache" \
docker.m.daocloud.io/library/node:20 \
sh -c 'test -d /cache/node_modules && test -f /cache/package-lock.json && echo "yes" || echo "no"')
if [ "$HAS_CACHE" = "yes" ]; then
echo "✅ 缓存命中,跳过 npm ci"
else
echo "⚠️ 缓存未命中,执行 npm ci..."
docker run --rm \
-v "$PWD:/workspace" \
-v "$NPM_CACHE_VOLUME:/workspace/apps/web/node_modules" \
-w /workspace/apps/web \
docker.m.daocloud.io/library/node:20 \
sh -lc "npm ci --no-audit --no-fund"
fi
else
# 完整模式:执行 npm ci
echo "执行 npm ci (完整模式)..."
docker run --rm \
-v "$PWD:/workspace" \
-v "$NPM_CACHE_VOLUME:/workspace/apps/web/node_modules" \
-w /workspace/apps/web \
docker.m.daocloud.io/library/node:20 \
sh -lc "npm ci --no-audit --no-fund"
fi
echo "=== 前端依赖安装完成 ==="