選取您的 Cookie 偏好設定

我們使用提供自身網站和服務所需的基本 Cookie 和類似工具。我們使用效能 Cookie 收集匿名統計資料,以便了解客戶如何使用我們的網站並進行改進。基本 Cookie 無法停用,但可以按一下「自訂」或「拒絕」以拒絕效能 Cookie。

如果您同意,AWS 與經核准的第三方也會使用 Cookie 提供實用的網站功能、記住您的偏好設定,並顯示相關內容,包括相關廣告。若要接受或拒絕所有非必要 Cookie,請按一下「接受」或「拒絕」。若要進行更詳細的選擇,請按一下「自訂」。

使用觸發和篩選來自動化啟動管道

焦點模式
使用觸發和篩選來自動化啟動管道 - AWS CodePipeline

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

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

觸發可讓您設定管道以啟動特定事件類型或篩選的事件類型,例如偵測到特定分支或提取請求的變更時。觸發條件可設定為具有在 CodePipeline 中使用 動作之連線的來源CodeStarSourceConnection動作,例如 GitHub、Bitbucket 和 GitLab。如需使用連線之來源動作的詳細資訊,請參閱 使用 CodeConnections 將第三方來源提供者新增至管道

CodeCommit 和 S3 等來源動作使用自動變更偵測,在進行變更時啟動管道。如需詳細資訊,請參閱CodeCommit 來源動作和 EventBridge

您可以使用主控台或 CLI 指定觸發。

您可以指定篩選條件類型,如下所示:

  • 無篩選條件

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

  • 指定篩選條件

    您可以新增篩選條件,在特定篩選條件上啟動管道,例如在程式碼推送的分支名稱上,並擷取確切的遞交。這也會將管道設定為不會在任何變更時自動啟動。

    • 推送

      • 有效的篩選條件組合包括:

        • Git 標籤

          包含或排除

        • 分支

          包含或排除

        • 分支 + 檔案路徑

          包含或排除

    • 提取請求

      • 有效的篩選條件組合包括:

        • 分支

          包含或排除

        • 分支 + 檔案路徑

          包含或排除

  • 請勿偵測變更

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

下表為每個事件類型提供有效的篩選選項。資料表也會顯示動作組態中自動變更偵測的觸發組態預設為 true 或 false。

觸發組態 事件類型 篩選條件選項 偵測變更
新增觸發條件 – 無篩選條件 true
新增觸發 – 程式碼推送時篩選 推送事件 Git 標籤、分支、檔案路徑 false
新增觸發 – 提取請求的篩選條件 提取請求 分支、檔案路徑 false
無觸發 – 未偵測 false
注意

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

如需欄位定義和觸發的進一步參考,請參閱

如需 JSON 結構中的欄位定義清單,請參閱 triggers

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

注意

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

觸發篩選條件的考量

使用觸發時,下列考量適用。

  • 每個來源動作不能新增多個觸發。

  • 您可以將多個篩選條件類型新增至觸發。如需範例,請參閱「4:具有兩種具有衝突的推送篩選條件類型的觸發條件包含和排除 」。

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

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

  • 對於在提取請求事件上觸發管道的篩選條件,對於已關閉的提取請求事件類型,連線的第三方儲存庫提供者可能具有合併事件的不同狀態。例如,在 Bitbucket 中,合併的 Git 事件不是提取請求關閉事件。不過,在 GitHub 中,合併提取請求是關閉事件。如需詳細資訊,請參閱依供應商提取觸發的請求事件

依供應商提取觸發的請求事件

下表提供 Git 事件的摘要,例如用於提取請求關閉,這會導致依提供者的提取請求事件類型。

連線的儲存庫提供者
觸發的 PR 事件 Bitbucket GitHub GHES GitLab
開啟 - 此選項會在為分支/檔案路徑建立提取請求時觸發管道。 建立提取請求會導致開啟的 Git 事件。 建立提取請求會導致開啟的 Git 事件。 建立提取請求會導致開啟的 Git 事件。 建立提取請求會導致開啟的 Git 事件。
更新 - 當分支/檔案路徑發佈提取請求修訂時,此選項會觸發管道。 發佈更新會導致更新的 Git 事件。 發佈更新會導致更新的 Git 事件。 發佈更新會導致更新的 Git 事件。 發佈更新會導致更新的 Git 事件。
已關閉 - 此選項會在分支/檔案路徑的提取請求關閉時觸發管道。 在 Bitbucket 中合併提取請求會導致關閉 Git 事件。重要:在 Bitbucket 中手動關閉提取請求而不合併不會導致關閉 Git 事件。 合併或手動關閉提取請求會導致已關閉的 Git 事件。 合併或手動關閉提取請求會導致已關閉的 Git 事件。 合併或手動關閉提取請求會導致已關閉的 Git 事件。

觸發篩選條件的範例

對於具有推送和提取請求事件類型篩選條件的 Git 組態,指定的篩選條件可能會彼此衝突。以下是推送和提取請求事件的有效篩選條件組合範例。觸發可以包含多種篩選條件類型,例如觸發組態中的兩種推送篩選條件類型,而推送和提取請求篩選條件類型將在它們之間使用 OR 操作,這表示任何相符項目都會啟動管道。同樣地,每個篩選條件類型可以包含多個篩選條件,例如 filePaths 和分支;這些篩選條件將使用 AND 操作,這表示只有完全相符項目才會啟動管道。每個篩選條件類型都可以包含 和 ,而且這些篩選條件類型之間會使用 AND 操作,這表示只有完全相符項目才會啟動管道。包含/排除 內的名稱,例如分支名稱,請使用 OR 操作。如果兩個推送篩選條件之間發生衝突,例如一個包含main分支,一個排除分支,則預設為排除。下列清單摘要說明 Git 組態物件每個部分的操作。

如需 JSON 結構中的欄位定義清單,以及包含和排除 的詳細參考,請參閱 triggers

範例 1:具有分支和檔案路徑篩選條件的篩選條件類型 (AND 操作)

對於提取請求等單一篩選條件類型,您可以合併篩選條件,這些篩選條件將使用 AND 操作,這表示只有完全相符項目才會啟動管道。下列範例顯示具有兩個不同篩選條件的推送事件類型的 Git 組態 (filePathsbranches)。在下列範例中, filePaths將與 一起 AND: branches

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

使用上面的 Git 組態,此範例會顯示事件,因為 AND 操作成功而啟動管道執行。換言之,篩選條件common/app.js會包含檔案路徑,即使refs/heads/feature/triggers 指定的分支沒有影響,也會以 AND 的形式啟動管道。

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

下列範例顯示具有上述組態的觸發事件,該觸發不會啟動管道執行,因為分支可以篩選,但檔案路徑不是。

{ "ref": "refs/heads/feature/triggers", ... "commits": [ { ... "modified": [ "src/Main.java" ] ... } ] }
範例 2:包含和排除 會在它們之間使用 AND 操作

觸發篩選條件,例如單一提取請求事件類型中的分支,在包含和排除 之間使用 AND 操作。這可讓您設定多個觸發,以啟動相同管道的執行。下列範例顯示推送事件的組態物件中具有單一篩選條件類型 (branches) 的觸發組態。IncludesExcludes操作將為 AND’ed,這表示如果分支符合排除模式 (例如feature-branch範例中的 ),則不會觸發管道,除非 也包含相符項目。如果包含模式相符,例如main分支的 ,則會觸發管道。

對於下列範例 JSON:

  • 將遞交推送至main分支會觸發管道

  • 將遞交推送到feature-branch分支不會觸發管道。

{ "branches": { "Includes": [ "main" ], "Excludes": [ "feature-branch" ] }
範例 3:具有推送和提取請求篩選條件類型 (OR 操作) 的觸發、檔案路徑和分支的篩選條件 (AND 操作),以及包含/排除 (AND 操作)

觸發組態物件,例如包含推送事件類型和提取請求事件類型的觸發,請在兩個事件類型之間使用 OR 操作。下列範例顯示具有包含main分支的推送事件類型的觸發組態,以及具有排除相同分支的一個提取請求事件類型main。此外,推送事件類型會LICENSE.txt排除一個檔案路徑,並README.MD包含一個檔案路徑。對於第二個事件類型,feature-branch分支 (包含) CreatedClosed或 的提取請求會啟動管道,而管道在 feature-branch-2main分支 (排除) 上建立或關閉提取請求時不會啟動。IncludesExcludes操作將為 AND’d,衝突預設為排除。例如,對於feature-branch分支上的提取請求事件 (包含於提取請求),而feature-branch分支被排除於推送事件類型,因此預設為排除。

針對下列範例,

  • 將遞交推送至README.MD檔案路徑 (包含) 的main分支 (包含) 將觸發管道。

  • feature-branch分支 (已排除) 上,推送遞交不會觸發管道。

  • 在包含的分支上,編輯README.MD檔案路徑 (包含) 會觸發管道。

  • 在包含的分支上,編輯LICENSE.TXT檔案路徑 (排除) 不會觸發管道。

  • feature-branch分支上,關閉README.MD檔案路徑的提取請求 (包含於推送事件) 不會觸發管道,因為推送事件類型會將feature-branch分支指定為已排除,因此衝突預設為排除。

下圖顯示 組態。

具有推送篩選條件類型和提取請求篩選條件類型的範例觸發組態

以下是組態的範例 JSON。

"triggers": [ { "providerType": "CodeStarSourceConnection", "gitConfiguration": { "sourceActionName": "Source", "push": [ { "branches": { "includes": [ "main" ], "excludes": [ "feature-branch", "feature-branch-2" ] }, "filePaths": { "includes": [ "README.md" ], "excludes": [ "LICENSE.txt" ] } } ], "pullRequest": [ { "events": [ "CLOSED", "OPEN" ], "branches": { "includes": [ "feature-branch" ], "excludes": [ "feature-branch-2", "main" ] } } ] } } ] },
範例 4:具有兩種具有衝突的推送篩選條件類型的觸發條件包含和排除

下圖顯示一個推送篩選條件類型,指定在 標籤 release-1(包含) 上進行篩選。新增第二個推送篩選條件類型,指定 對分支 main(包含) 進行篩選,而不開始推送至feature*分支 (排除)。

在下列範例中:

  • feature-branch分支上的標籤 release-1(包含於第一個推送篩選條件) 推送版本 (不包含feature*於第二個推送篩選條件) 不會觸發管道,因為兩個事件類型將為 AND'd。

  • main分支推送版本 (包含於第二個推送篩選條件) 將啟動管道。

以下編輯頁面範例顯示兩種推送篩選條件類型及其 的組態,包括 和 排除。

具有推送篩選條件類型的範例觸發組態,其中包含 release-1 標籤,以及包含 main* 分支且排除特徵* 分支的推送篩選條件類型

以下是組態的範例 JSON。

"triggers": [ { "providerType": "CodeStarSourceConnection", "gitConfiguration": { "sourceActionName": "Source", "push": [ { "tags": { "includes": [ "release-1" ] } }, { "branches": { "includes": [ "main*" ], "excludes": [ "feature*" ] } } ] } } ] },
範例 5:在預設動作組態 BranchName 用於手動啟動時設定的觸發

動作組態預設BranchName欄位會定義單一分支,用於手動啟動管道時,而具有篩選條件的觸發條件可用於您指定的任何分支。

以下是顯示 BranchName 欄位之動作組態的範例 JSON。

{ "name": "Source", "actions": [ { "name": "Source", "actionTypeId": { "category": "Source", "owner": "AWS", "provider": "CodeStarSourceConnection", "version": "1" }, "runOrder": 1, "configuration": { "BranchName": "main", "ConnectionArn": "ARN", "DetectChanges": "false", "FullRepositoryId": "owner-name/my-bitbucket-repo", "OutputArtifactFormat": "CODE_ZIP" }, "outputArtifacts": [ { "name": "SourceArtifact" } ], "inputArtifacts": [], "region": "us-west-2", "namespace": "SourceVariables" } ],

下列範例動作輸出顯示手動啟動管道時使用的預設分支主節點。

手動啟動管道的動作輸出頁面範例

下列範例動作輸出顯示提取請求和分支,當依提取請求篩選時,用於觸發。

以觸發提取請求篩選條件類型啟動的管道的動作輸出頁面範例
隱私權網站條款Cookie 偏好設定
© 2025, Amazon Web Services, Inc.或其附屬公司。保留所有權利。