From 1df53323d04a87b8236c9c24cb3f0cfd6279c32d Mon Sep 17 00:00:00 2001 From: Ubuntu Date: Thu, 21 May 2026 18:01:31 +0800 Subject: [PATCH] =?UTF-8?q?fix(ci):=20=E4=BF=AE=E5=A4=8D=20CI/CD=20?= =?UTF-8?q?=E5=B7=A5=E4=BD=9C=E6=B5=81=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - fix: release.yml typecheck 脚本名 compile → typecheck(发版阻断 bug) - perf: CI 测试改用 test:coverage 生成覆盖率报告 - refactor: Release 复用 CI 工作流(workflow_call),消除重复 Job - feat: Release 新增 Firefox/Chrome zip 产物验证步骤 - fix: 补全 lint-staged 配置,修复 pre-commit hook 失效问题 - feat: 添加 Dependabot 自动依赖更新配置 --- .github/dependabot.yml | 25 +++++++++++ .github/workflows/ci.yml | 11 +++-- .github/workflows/release.yml | 81 ++++++++++------------------------- package.json | 9 ++++ 4 files changed, 61 insertions(+), 65 deletions(-) create mode 100644 .github/dependabot.yml diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 0000000..b32a020 --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,25 @@ +version: 2 +updates: + # npm 依赖 + - package-ecosystem: "npm" + directory: "/" + schedule: + interval: "weekly" + day: "monday" + open-pull-requests-limit: 10 + labels: + - "dependencies" + commit-message: + prefix: "deps" + + # GitHub Actions + - package-ecosystem: "github-actions" + directory: "/" + schedule: + interval: "weekly" + day: "monday" + labels: + - "dependencies" + - "ci" + commit-message: + prefix: "ci" diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 2982e62..aa66fd0 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -2,11 +2,10 @@ name: CI on: push: - branches: - - main + branches: [main] pull_request: - branches: - - main + branches: [main] + workflow_call: # 允许 Release 工作流复用此 CI concurrency: group: ${{ github.workflow }}-${{ github.ref }} @@ -67,8 +66,8 @@ jobs: - name: Install dependencies run: npm ci - - name: Run tests - run: npm run test + - name: Run tests with coverage + run: npm run test:coverage build: name: Build (${{ matrix.browser }}) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 373a1f3..64a8dca 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -9,69 +9,15 @@ permissions: contents: write jobs: - # ── Phase 1: 全量 CI 检查 ──────────────────────────────────────────── - lint: - name: Lint - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@v4 + # ── Phase 1: 复用 CI 全量检查 ──────────────────────────────── + ci: + uses: ./.github/workflows/ci.yml - - name: Setup Node.js - uses: actions/setup-node@v4 - with: - node-version: '22' - cache: 'npm' - - - name: Install dependencies - run: npm ci - - - name: Run ESLint - run: npm run lint - - typecheck: - name: TypeScript Check - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@v4 - - - name: Setup Node.js - uses: actions/setup-node@v4 - with: - node-version: '22' - cache: 'npm' - - - name: Install dependencies - run: npm ci - - - name: Run TypeScript type check - run: npm run compile - - test: - name: Unit Tests - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@v4 - - - name: Setup Node.js - uses: actions/setup-node@v4 - with: - node-version: '22' - cache: 'npm' - - - name: Install dependencies - run: npm ci - - - name: Run tests - run: npm run test - - # ── Phase 2: 打包 & 发布 ───────────────────────────────────────────── + # ── Phase 2: 打包 & 发布 ───────────────────────────────────── release: name: Package & Release runs-on: ubuntu-latest - needs: [lint, typecheck, test] + needs: [ci] steps: - name: Checkout uses: actions/checkout@v4 @@ -101,6 +47,23 @@ jobs: echo "Found Chrome zip: $CHROME_ZIP" echo "Found Firefox zip: $FIREFOX_ZIP" + - name: Verify zip artifacts + run: | + if [ -z "$CHROME_ZIP" ] || [ ! -f "$CHROME_ZIP" ]; then + echo "❌ Chrome zip not found" + exit 1 + fi + echo "✅ Chrome zip: $(ls -lh "$CHROME_ZIP" | awk '{print $5}')" + + if [ -z "$FIREFOX_ZIP" ] || [ ! -f "$FIREFOX_ZIP" ]; then + echo "❌ Firefox zip not found" + exit 1 + fi + echo "✅ Firefox zip: $(ls -lh "$FIREFOX_ZIP" | awk '{print $5}')" + env: + CHROME_ZIP: ${{ steps.find_zips.outputs.chrome_zip }} + FIREFOX_ZIP: ${{ steps.find_zips.outputs.firefox_zip }} + - name: Extract version from tag id: version run: echo "version=${GITHUB_REF_NAME#v}" >> "$GITHUB_OUTPUT" diff --git a/package.json b/package.json index dfb9f42..1e29f6d 100644 --- a/package.json +++ b/package.json @@ -20,6 +20,15 @@ "test:coverage": "vitest run --coverage", "typecheck": "tsc --noEmit" }, + "lint-staged": { + "*.{ts,tsx}": [ + "eslint --fix", + "prettier --write" + ], + "*.{json,md,yml,yaml,css}": [ + "prettier --write" + ] + }, "dependencies": { "@dnd-kit/core": "^6.3.1", "@dnd-kit/sortable": "^10.0.0",