name: CI on: push: branches: [dev, release, master] pull_request: branches: [dev, release, master] jobs: test: runs-on: ubuntu-latest name: 测试 steps: - name: 准备 | 签出代码 uses: actions/checkout@v4 - name: 准备 | 配置开发环境 uses: actions/setup-node@v4 with: node-version: "20" - name: 准备 | 获取包管理器版本 run: | PNPM_VERSION=$(grep -o '"packageManager": "[^"]*"' package.json | cut -d'@' -f2 | tr -d '"') echo "PNPM_VERSION=$PNPM_VERSION" >> $GITHUB_ENV echo "✅ 包管理器版本为 pnpm@$PNPM_VERSION" - name: 准备 | 配置全局缓存 uses: actions/cache@v3 with: path: ~/.npm key: ${{ runner.os }}-npm-pnpm-${{ env.PNPM_VERSION }} restore-keys: | ${{ runner.os }}-npm-pnpm- - name: 准备 | 安装包管理器 run: | npm install -g pnpm pnpm --version echo "✅ 包管理器安装成功" - name: 准备 | 获取项目依赖哈希 id: files-hash uses: actions/files-hash@v0.1 with: files: "**/pnpm-lock.yaml" - name: 准备 | 配置依赖缓存 uses: actions/cache@v3 with: path: ~/.pnpm-store key: ${{ runner.os }}-pnpm-store-${{ steps.files-hash.outputs.hash }} restore-keys: | ${{ runner.os }}-pnpm-store- - name: 准备 | 安装依赖 run: | pnpm install --frozen-lockfile echo "✅ 依赖安装完成" - name: 测试 | 执行语法检查 run: | echo "🔍 执行 JavaScript 语法检查..." node -c src/index.js echo "✅ 语法检查通过" - name: 测试 | 执行 Lint 检查 run: | echo "🔍 执行 Lint 检查..." pnpm run lint echo "✅ Lint 检查通过" - name: 测试 | 执行格式化检查 run: | echo "🔍 执行格式化检查..." pnpm run format:check echo "✅ 格式化检查通过" - name: 测试 | 执行测试 run: | echo "🧪 执行测试..." pnpm run test echo "✅ 测试通过"