篩選程式碼推送或提取要求的觸發程序 - AWS CodePipeline

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

篩選程式碼推送或提取要求的觸發程序

您可以設定管線觸發程序的篩選器,以針對不同的 Git 事件 (例如標籤或分支推送、特定檔案路徑中的變更、開啟到特定分支的提取要求等) 啟動管線執行。您可以使用 AWS CodePipeline 控制台或中的create-pipelineupdate-pipeline命令 AWS CLI 來配置觸發器的篩選器。

您可以為下列觸發器類型指定篩選器:

  • 推送

    當變更推送至來源儲存庫時,推送觸發程序會啟動管道。執行將使用您正在推送的分支(即目標分支)的提交。您可以篩選分支、檔案路徑或 Git 標籤上的推送觸發程序。

  • 拉取請求

    在來源儲存庫中開啟、更新或關閉提取要求時,提取要求觸發程序會啟動管道。執行將使用您從中提取的源分支(即源分支)的提交。您可以在分支和文件路徑上過濾提取請求觸發器。

    注意

    提取要求的支援事件類型會開啟、更新或關閉 (合併)。所有其他提取請求事件都會被忽略。

管線定義可讓您在相同的推送觸發器組態中組合不同的篩選器。如需有關管線定義的詳細資訊,請參閱在管線 JSON (CLI) 中觸發篩選。有效的組合有:

  • 標籤

  • 分支機構

  • 分支 + 文件路徑

您可以依下列方式指定篩選類型:

  • 沒有篩選

    此觸發器組態會在任何推送至指定為動作組態一部分的預設分支時啟動您的管道。

  • 指定篩選

    您可以添加一個過濾器,該過濾器可以在特定的過濾器上啟動管道,例如在代碼推送的分支名稱上,並獲取確切的提交。這也會將管線設定為不會在任何變更時自動啟動。

  • 不偵測變更

    這不會新增觸發程序,且管線不會在任何變更時自動啟動。

下表提供每個事件類型的有效篩選選項。此表格也會顯示動作組態中自動變更偵測時,哪些觸發程序組態預設為 true 或 false。

觸發器配置 事件類型 篩選條件選項 偵測變更
新增觸發器 — 無篩選 true
添加觸發器 — 在代碼推送時進行過濾 推送事件 Git 標籤,分支,文件路徑 false
新增觸發程式 — 篩選提取要求 提取請求 分支, 檔案路徑 false
無觸發器 — 未偵測 false
注意

此觸發類型使用自動變更偵測 (作為Webhook觸發類型)。使用此觸發器類型的來源動作提供者是針對程式碼推送 (Bitbucket Cloud、 GitHub 企業伺服器 GitHub、 GitLab .com 和 GitLab自我管理) 設定的連線。

對於過濾,支持 glob 格式的正則表達式模式,如中在語法中使用 glob 模式所述。

注意

在某些情況下,對於具有在檔案路徑上篩選之觸發程序的管線,當第一次建立具有檔案路徑篩選器的分支時,管線可能不會啟動。如需詳細資訊,請參閱 具有使用依檔案路徑觸發程序篩選的連線的管線可能無法在分支建立時啟動

觸發器濾波器的考量

使用觸發程序時,必須考量下列事項。

  • 對於具有分支和文件路徑過濾器的觸發器,第一次推送分支時,管道將不會運行,因為無法訪問為新創建的分支更改的文件列表。

  • 合併提取請求可能會觸發兩個管道執行,在推送 (分支篩選器) 和提取要求 (分支篩選器) 觸發組態相交的情況下。

觸發器濾波器的範例

對於具有推送和提取要求事件類型之篩選器的 Git 組態,指定的篩選器可能會相互衝突。以下是推送與提取要求事件的有效篩選器組合範例。

當客戶在單一組態物件中結合篩選器時,這些篩選器會使用 AND 作業,這表示只有完全符合才會啟動管線。下面的例子顯示了 Git 的配置:

{ "filePaths": { "includes": ["common/**/*.js"] }, "branches": { "includes": ["feature/**"] } }

透過上述 Git 設定,這個範例會顯示一個事件,因為 AND 作業成功而啟動管線執行。

{ "ref": "refs/heads/feature/triggers", ... "commits": [ { ... "modified": [ "common/app.js" ] ... } ] }

此範例顯示不會啟動管線執行的事件,因為分支能夠篩選,但檔案路徑不是。

{ "ref": "refs/heads/feature/triggers", ... "commits": [ { ... "modified": [ "src/Main.java" ] ... } ] }

同時,推送陣列內的觸發器配置物件會使用 OR 作業。這可讓您配置多個觸發器,以啟動同一管線的執行。如需 JSON 結構中欄位定義的清單,請參閱在管線 JSON (CLI) 中觸發篩選