Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 14 additions & 13 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down