|
1 | 1 | name: CI |
2 | 2 |
|
3 | 3 | on: |
| 4 | + workflow_dispatch: {} |
4 | 5 | push: |
5 | | - branches: [ main, develop ] |
| 6 | + branches: [ main, integrate/mvp, "feat/**", "chore/**" ] |
6 | 7 | pull_request: |
7 | | - branches: [ main, develop ] |
| 8 | + branches: [ main, integrate/mvp ] # <— 建議只針對被保護分支的 PR |
| 9 | + |
| 10 | +concurrency: |
| 11 | + group: ${{ github.workflow }}-${{ github.ref }} |
| 12 | + cancel-in-progress: true |
8 | 13 |
|
9 | 14 | env: |
10 | 15 | # Go version is extracted dynamically from go.mod in setup-go step |
@@ -333,35 +338,31 @@ jobs: |
333 | 338 | # ============================================================================= |
334 | 339 | # Final CI Status Check |
335 | 340 | # ============================================================================= |
336 | | - ci-status: |
337 | | - name: CI Status Check |
338 | | - runs-on: ubuntu-latest |
339 | | - needs: [generate, build, test, lint, security] |
340 | | - if: always() |
341 | | - timeout-minutes: 5 |
342 | | - |
343 | | - steps: |
344 | | - - name: Check all job statuses |
345 | | - run: | |
346 | | - echo "=== CI Pipeline Status ===" |
347 | | - echo "Generate CRDs: ${{ needs.generate.result }}" |
348 | | - echo "Build: ${{ needs.build.result }}" |
349 | | - echo "Test: ${{ needs.test.result }}" |
350 | | - echo "Lint: ${{ needs.lint.result }}" |
351 | | - echo "Security: ${{ needs.security.result }}" |
352 | | - echo "" |
353 | | - |
354 | | - # Check if any critical jobs failed |
355 | | - if [[ "${{ needs.generate.result }}" != "success" || \ |
356 | | - "${{ needs.build.result }}" != "success" || \ |
357 | | - "${{ needs.test.result }}" != "success" || \ |
358 | | - "${{ needs.lint.result }}" != "success" || \ |
359 | | - "${{ needs.security.result }}" != "success" ]]; then |
360 | | - echo "❌ CI Pipeline Failed - One or more critical jobs failed" |
361 | | - exit 1 |
362 | | - else |
363 | | - echo "✅ CI Pipeline Succeeded - All jobs completed successfully" |
364 | | - fi |
| 341 | +ci-status: |
| 342 | + name: CI Status Check # <— 顯示名稱固定(將出現在 Ruleset 清單) |
| 343 | + runs-on: ubuntu-latest |
| 344 | + needs: [generate, build, test, lint, security] |
| 345 | + if: always() |
| 346 | + timeout-minutes: 5 |
| 347 | + steps: |
| 348 | + - name: Gate on upstream job results |
| 349 | + shell: bash |
| 350 | + run: | |
| 351 | + echo "Generate: ${{ needs.generate.result }}" |
| 352 | + echo "Build: ${{ needs.build.result }}" |
| 353 | + echo "Test: ${{ needs.test.result }}" |
| 354 | + echo "Lint: ${{ needs.lint.result }}" |
| 355 | + echo "Security: ${{ needs.security.result }}" |
| 356 | +
|
| 357 | + if [[ "${{ needs.generate.result }}" != "success" || \ |
| 358 | + "${{ needs.build.result }}" != "success" || \ |
| 359 | + "${{ needs.test.result }}" != "success" || \ |
| 360 | + "${{ needs.lint.result }}" != "success" || \ |
| 361 | + "${{ needs.security.result }}" != "success" ]]; then |
| 362 | + echo "❌ CI Pipeline Failed" |
| 363 | + exit 1 |
| 364 | + fi |
| 365 | + echo "✅ CI Pipeline Succeeded" |
365 | 366 |
|
366 | 367 | - name: Generate CI summary |
367 | 368 | if: always() |
|
0 commit comments