From 1224b5a8e9ff71e1bba20db0e9c1543daa63d5c3 Mon Sep 17 00:00:00 2001 From: Hoshi <132435834+hoshimoe@users.noreply.github.com> Date: Sat, 22 Aug 2026 12:35:28 +0000 Subject: [PATCH] =?UTF-8?q?=E5=AE=89=E5=85=A8=E6=8E=83=E6=8F=8F=E9=82=A3?= =?UTF-8?q?=E6=AE=B5=E8=A8=BB=E8=A7=A3=E5=B7=B2=E7=B6=93=E9=81=8E=E6=9C=9F?= =?UTF-8?q?=EF=BC=9A=E5=AE=83=E6=8F=8F=E8=BF=B0=E7=9A=84=E9=96=98=E9=96=80?= =?UTF-8?q?=E5=9C=A8=202026-08-21=20=E5=B0=B1=E6=8B=86=E6=8E=89=E4=BA=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit `security` job 的註解還寫著「**這一組在 PR 上也跑,但裡面只有 Gitleaks 會動**」,以及「閘門下移到被呼叫的那三個 job 上(`security.yml` 裡各自的 `if: github.event_name != 'pull_request'`)」。 **那三條 `if` 已經不存在了**——2026-08-21 隨「CI 成本不再是判準」一起拆掉, 四種掃描現在在 PR 上全部會跑。`security.yml` 自己的註解是對的(它用過去式 記下了那條閘為什麼被移除),沒有跟上的只有呼叫端這一段。 這正是同一個檔案下面幾行已經記過的那個形狀:**一段描述著不存在的機制的 註解,比沒有註解更糟**——讀者會以為這裡已經對照過了,於是沒有人去比對。 而它不會有任何症狀:workflow 照跑,掃描照綠。 改成用過去式記下那個取捨的哪一半失效了(分鐘數不再稀缺,而 「在 `main` 才攔下=已經合併」的代價一直都在),並講明 `needs:` 那道閘為什麼**與成本無關**、所以照樣留著。 十五個倉庫同一段,一起改。 --- .github/workflows/ci.yml | 27 ++++++++++++++------------- 1 file changed, 14 insertions(+), 13 deletions(-) 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