From d3a09d892e51096f6cccded31150624c7773a71e Mon Sep 17 00:00:00 2001 From: Jeffery Date: Mon, 20 Jul 2026 15:00:23 +0800 Subject: [PATCH] =?UTF-8?q?feat(push-token):=20=E6=96=B0=E5=A2=9E=20push-t?= =?UTF-8?q?oken=20=E8=BC=B8=E5=85=A5=E4=BB=A5=20PAT=20=E6=8E=A8=E9=80=81?= =?UTF-8?q?=E7=B5=90=E6=9E=9C=20commit=20=E8=A7=B8=E7=99=BC=20CI?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 以自動 token(gitea.token/GITHUB_TOKEN)推送的 commit 不會再觸發 CI,導致新 head 缺檢查而卡合併;新增 push-token(PAT)由呼叫端以 secrets 傳入,改以 PAT 身分推送使 PR synchronize 事件再觸發 CI,由步驟 1 快速回報把結果蓋到新 head。留空=退回 token 走 origin 推送。 Co-Authored-By: Claude Opus 4.8 (1M context) --- action.yml | 11 +++++++++++ src/lib/context.js | 5 +++++ 2 files changed, 16 insertions(+) diff --git a/action.yml b/action.yml index 08eb38f..0cd08f6 100644 --- a/action.yml +++ b/action.yml @@ -41,6 +41,17 @@ inputs: required: false # 預設為字串 'false',代表不啟用建問題模式(主程式只認字串 'true' 才啟用)。 default: 'false' + # 推送用 PAT:推送 findings/exclusions commit 時改以此 token 進行。 + push-token: + # 參數用途說明:以自動 token(gitea.token / GITHUB_TOKEN)推送的 commit 不會再觸發 CI, + # 導致新 head 缺檢查而卡合併;改用 PAT 推送會讓 PR 的 synchronize 事件再觸發 CI, + # 由主程式步驟 1 快速回報([success]/[failure])廉價地把結果蓋到新 head。 + # 呼叫端以 secrets 傳入(例如 secrets.TOKEN)。留空=退回以 token 走 origin 推送(不會再觸發)。 + description: '推送 findings/exclusions commit 用的 PAT(讓 CI 再觸發;呼叫端以 secrets 傳入;留空=退回 token 推送、不再觸發)' + # 選填:未指定時退回以 token 推送。 + required: false + # 預設為空字串,代表不使用專用推送 PAT。 + default: '' # 執行方式區塊:宣告本 action 為 node action 及其進入點。 runs: # 以 Node.js 24 runtime 直接在 runner 上執行(非 Docker 容器、非 composite)。 diff --git a/src/lib/context.js b/src/lib/context.js index 05eb40c..a3c06ed 100644 --- a/src/lib/context.js +++ b/src/lib/context.js @@ -20,6 +20,7 @@ const path = require('path'); * token: string, * model: string, * createIssue: boolean, + * pushToken: string, * event: Object, * pr: (Object|null), * prNumber: (number|null), @@ -41,6 +42,8 @@ const path = require('path'); * - model:action input `model`(INPUT_MODEL,已 trim),指定 AI 模型,缺值時為空字串。 * - createIssue:action input `create-issue`(INPUT_CREATE-ISSUE),是否將問題建到 * 存取庫的問題追蹤(建問題模式);trim + 小寫後與字串 'true' 嚴格比對,預設 false。 + * - pushToken:action input `push-token`(INPUT_PUSH-TOKEN),推送 findings/exclusions commit 用的 PAT; + * 提供時以 PAT 身分推送使 CI 再觸發(配合步驟 1 快速回報);留空=退回以 token 走 origin 推送(不會再觸發)。 * - event:事件 payload 解析後的完整物件;讀取失敗時為空物件。 * - pr:payload 內的 pull_request 物件;非 PR 事件時為 null。 * - prNumber:PR 編號,優先取 payload,退而從 GITHUB_REF(refs/pull/N/...)解析;皆無時為 null。 @@ -92,6 +95,8 @@ function loadContext() { model: (process.env.INPUT_MODEL || '').trim(), // 是否將問題建到存取庫的問題追蹤(input: create-issue,字串 'true' 才啟用,預設否)。 createIssue: (process.env['INPUT_CREATE-ISSUE'] || '').trim().toLowerCase() === 'true', + // 推送 findings/exclusions commit 用的 PAT(input: push-token);提供時以 PAT 推送讓 CI 再觸發,留空=退回 token。 + pushToken: (process.env['INPUT_PUSH-TOKEN'] || '').trim(), event, pr, prNumber,