程式碼推送或提取請求時篩選觸發條件 - 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 Enterprise Server、.com 和 GitLab自我管理) GitLab。

對於篩選,支援 glob 格式的規則表達式模式,如 所述使用語法中的 glob 模式

注意

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

觸發條件篩選條件的考量事項

使用觸發程序時,請考量下列各項。

  • 對於具有分支和檔案路徑篩選條件的觸發條件,第一次推送分支時,由於無法存取新建立分支變更的檔案清單,因此不會執行管道。

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

觸發條件篩選條件的範例

對於具有推送和提取請求事件類型的篩選條件的 Git 組態,指定的篩選條件可能會彼此衝突。以下是推拉請求事件的有效篩選條件組合範例。

您可以在單一組態物件中合併篩選條件,這些篩選條件將使用 AND操作,這表示只有完全相符才會啟動管道。下列範例顯示「組態物件」內具有兩個不同篩選條件 (filePathsbranches) 的 Git 組態,而不是單一篩選條件。在下列範例中, filePaths 將使用 AND's: branches

{ "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 操作。這可讓您設定多個觸發程序,以啟動相同管道的執行。下列範例顯示組態物件中具有單一篩選條件 (branches) 的 Git 組態。IncludesExcludes操作將是 OR,這表示如果分支符合排除模式 (例如feature-branch在 範例中),則不會觸發管道,除非 也包含相符項目。如果 包含模式相符,例如main分支,則會觸發管道。

{ "branches": { "Includes": [ "main" ], "Excludes": [ "feature-branch" ] }

如需 JSON 結構中的欄位定義清單,請參閱 管道中的觸發篩選 JSON(CLI)