diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 2562838..da581fd 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -50,22 +50,23 @@ jobs: # # 掃描本身的定義在 `security.yml`,那支同時還掛著每週排程(**不**經過這道閘)。 security: - # **這一組在 PR 上也跑,但裡面只有 Gitleaks 會動**(裁示 2026-08-16)。 + # **這一組在 PR 上全部會跑**(裁示 2026-08-21)。 # - # 判準是「漏到 `main` 之後要付什麼」: + # 2026-08-16 到 08-21 之間只有 Gitleaks 會動,其餘三種各自帶一條 + # `if: github.event_name != 'pull_request'`。當時的判準是「漏到 `main` + # 之後要付什麼」:CodeQL/govulncheck/Trivy 找到的東西**修一次就結束**, + # 在 PR 攔下與在 `main` 攔下代價一樣,所以省下每個 PR 數分鐘;只有 + # Gitleaks 代價不同(憑證已經在 git 歷史裡,刪掉不夠,**必須輪替**), + # 所以它留在 PR。 # - # | | 補救 | - # |---|---| - # | CodeQL/govulncheck/Trivy | **修程式**,修好就結束 | - # | **Gitleaks** | 刪掉不夠——憑證已經在 git 歷史裡,**必須輪替** | + # **前半仍然成立,後半不再是收益**:升上 Enterprise 之後分鐘數不是稀缺的 + # 東西了,而代價一直都在——一個在 `main` 才被攔下的問題,是一個**已經 + # 合併**的問題。判準因此收斂成一句:**CI 做得到的驗證,就讓它在合併前跑。** + # 那三條 `if` 已於 2026-08-21 從 `security.yml` 拆掉。 # - # 前三種在 PR 攔下與在 `main` 攔下代價一樣,所以留在 `main`(省下每個 PR - # 數分鐘);Gitleaks 是唯一代價不同的,所以掛回 PR。 - # - # **閘門下移到被呼叫的那三個 job 上**(`security.yml` 裡各自的 - # `if: github.event_name != 'pull_request'`),不是留在這裡——留在這裡會把 - # Gitleaks 一起關掉。這樣做同時保住了檢查名稱:它仍然是 - # `安全掃描 / Gitleaks`,按名字釘住的分支保護不受影響。 + # **`needs: [verify]` 那道閘留著,理由與成本無關**:建置壞掉時 CodeQL 的 + # autobuild 與 govulncheck 吐的是同一個編譯錯誤換一種包裝,多餘的紅燈會 + # 稀釋掉真的那一顆。每週排程**不**經過它(見上方 `on:` 的註解)。 name: 安全掃描 # 閘門對公開倉庫也成立了(裁示 2026-08-16):掃描要先等基礎驗證綠。 # 取代 workspace decisions/infrastructure/公開倉庫的掃描不經閘門.md