本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
您可以設定管道觸發條件的篩選條件,以啟動不同 Git 事件的管道執行,例如標籤或分支推送、特定檔案路徑的變更、開啟特定分支的提取請求等。您可以使用 AWS CodePipeline 主控台或 中的 create-pipeline和 update-pipeline命令 AWS CLI 來設定觸發篩選條件。
注意
動作組態BranchName
欄位定義單一分支,而具有篩選條件的觸發條件可用於您指定的任何分支。對於使用觸發來透過推送或提取請求篩選分支的管道,管道不會在動作組態中使用預設BranchName
欄位分支。不過,手動啟動管道時,動作組態中 BranchName
欄位的分支是預設值。如需範例,請參閱「5:在預設動作組態 BranchName 用於手動啟動時設定的觸發」。
您可以為下列觸發類型指定篩選條件:
-
推送
推送觸發會在將變更推送至來源儲存庫時啟動管道。執行將使用您推送到的分支 (即目的地分支) 中的遞交。您可以在分支、檔案路徑或 Git 標籤上篩選推送觸發。
-
提取請求
提取請求觸發會在來源儲存庫中開啟、更新或關閉提取請求時啟動管道。執行將使用您從中提取的來源分支 (即來源分支) 中的遞交。您可以在分支和檔案路徑上篩選提取請求觸發。
提取請求支援的事件類型如下。會忽略所有其他提取請求事件。
-
已開啟
-
Updated
-
關閉 (合併)
注意
某些提取請求事件行為可能因提供者而有所不同。如需詳細資訊,請參閱 依供應商提取觸發的請求事件。
-
管道定義可讓您在相同的推送觸發組態中結合不同的篩選條件。如需管道定義的詳細資訊,請參閱 新增推送和提取請求事件類型的篩選條件 (CLI)。如需欄位定義的清單,請參閱本指南中管道結構參考中的觸發。
新增推送和提取請求事件類型的篩選條件 (主控台)
您可以使用 主控台為推送事件新增篩選條件,並包含或排除分支或檔案路徑。
新增篩選條件 (主控台)
登入 AWS Management Console 並開啟 CodePipeline 主控台,網址為 https://http://console.aws.amazon.com/codesuite/codepipeline/home
。 與 AWS 您的帳戶相關聯的所有管道名稱和狀態都會顯示。
-
在 Name (名稱) 中,選擇您想編輯的管道名稱。否則,請在管道建立精靈上使用這些步驟。
-
在管道詳細資訊頁面上,選擇 Edit (編輯)。
-
在編輯頁面上,選擇您要編輯的來源動作。選擇編輯觸發條件。選擇指定篩選條件。
-
在事件類型中,從下列選項中選擇推送。
-
選擇推送以在變更推送至來源儲存庫時啟動管道。選擇此選項可讓欄位指定分支和檔案路徑或 Git 標籤的篩選條件。
-
選擇提取請求,以在來源儲存庫中開啟、更新或關閉提取請求時啟動管道。選擇此選項可讓欄位指定目的地分支和檔案路徑的篩選條件。
-
-
在推送下,在篩選條件類型中,選擇下列其中一個選項。
-
選擇分支以指定觸發器監控的來源儲存庫中的分支,以便知道何時啟動工作流程執行。在包含中,以 glob 格式輸入您要為觸發組態指定的分支名稱模式,以在指定的分支變更時啟動管道。在排除中,以 glob 格式輸入分支名稱的 regex 模式,您要為觸發組態指定此模式,以忽略和不要在指定分支的變更時啟動管道。如需更多資訊,請參閱使用語法中的 glob 模式。
注意
如果包含和排除兩者的模式相同,則預設為排除模式。
您可以使用 glob 模式來定義分支名稱。例如,使用
main*
來比對以 開頭的所有分支main
。如需更多資訊,請參閱使用語法中的 glob 模式。針對推送觸發,指定您要推送的分支,也就是目的地分支。對於提取請求觸發,指定您要開啟提取請求的目標分支。
-
(選用) 在檔案路徑下,為您的觸發指定檔案路徑。視需要在包含和排除中輸入名稱。
您可以使用 glob 模式來定義檔案路徑名稱。例如,使用
prod*
來比對以 開頭的所有檔案路徑prod
。如需更多資訊,請參閱使用語法中的 glob 模式。 -
選擇標籤以設定管道觸發組態,以 Git 標籤開頭。在包含中,以 glob 格式輸入您要為觸發組態指定的標籤名稱模式,以在發行指定的標籤時啟動管道。在排除中,以 glob 格式輸入標籤名稱的 regex 模式,您要為觸發組態指定此模式,以忽略指定標籤或標籤的發行時,不要啟動管道。如果包含和排除兩者的標籤模式相同,則預設為排除標籤模式。
-
-
在推送下,在篩選條件類型中,選擇下列其中一個選項。
-
選擇分支以指定觸發器監控的來源儲存庫中的分支,以便知道何時啟動工作流程執行。在包含中,以 glob 格式輸入您要為觸發組態指定的分支名稱模式,以在指定的分支變更時啟動管道。在排除中,以 glob 格式輸入分支名稱的 regex 模式,您要為觸發組態指定此模式,以忽略和不要在指定分支的變更時啟動管道。如需更多資訊,請參閱使用語法中的 glob 模式。
注意
如果包含和排除兩者的模式相同,則預設為排除模式。
您可以使用 glob 模式來定義分支名稱。例如,使用
main*
來比對以 開頭的所有分支main
。如需更多資訊,請參閱使用語法中的 glob 模式。對於推送觸發,指定您要推送的分支,也就是目的地分支。對於提取請求觸發,指定您要開啟提取請求的目標分支。
-
(選用) 在檔案路徑下,為您的觸發指定檔案路徑。視需要在包含和排除中輸入名稱。
您可以使用 glob 模式來定義檔案路徑名稱。例如,使用
prod*
來比對以 開頭的所有檔案路徑prod
。如需更多資訊,請參閱使用語法中的 glob 模式。 -
選擇提取請求以設定管道觸發組態,以從您指定的提取請求事件開始。
-
新增推送和提取請求事件類型的篩選條件 (CLI)
您可以更新管道 JSON 以新增觸發條件的篩選條件。
若要使用 AWS CLI 建立或更新管道,請使用 create-pipeline
或 update-pipeline
命令。
下列範例 JSON 結構提供 下欄位定義的參考create-pipeline
。
如需欄位定義的清單,請參閱本指南中管道結構參考中的觸發。
{
"pipeline": {
"name": "MyServicePipeline",
"triggers": [
{
"provider": "Connection",
"gitConfiguration": {
"sourceActionName": "ApplicationSource",
"push": [
{
"filePaths": {
"includes": [
"projectA/**",
"common/**/*.js"
],
"excludes": [
"**/README.md",
"**/LICENSE",
"**/CONTRIBUTING.md"
]
},
"branches": {
"includes": [
"feature/**",
"release/**"
],
"excludes": [
"mainline"
]
},
"tags": {
"includes": [
"release-v0", "release-v1"
],
"excludes": [
"release-v2"
]
}
}
],
"pullRequest": [
{
"events": [
"CLOSED"
],
"branches": {
"includes": [
"feature/**",
"release/**"
],
"excludes": [
"mainline"
]
},
"filePaths": {
"includes": [
"projectA/**",
"common/**/*.js"
],
"excludes": [
"**/README.md",
"**/LICENSE",
"**/CONTRIBUTING.md"
]
}
}
]
}
}
],
"stages": [
{
"name": "Source",
"actions": [
{
"name": "ApplicationSource",
"configuration": {
"BranchName": "mainline",
"ConnectionArn": "arn:aws:codestar-connections:eu-central-1:111122223333:connection/fe9ff2e8-ee25-40c9-829e-65f8EXAMPLE",
"FullRepositoryId": "monorepo-example",
"OutputArtifactFormat": "CODE_ZIP"
}
}
]
}
]
}
}
新增推送和提取請求事件類型的篩選條件 (AWS CloudFormation 範本)
您可以在 中更新管道資源 AWS CloudFormation ,以新增觸發條件篩選。
下列範例範本程式碼片段提供觸發條件欄位定義的 YAML 參考。如需欄位定義的清單,請參閱本指南中管道結構參考中的觸發。
如需連線來源和觸發篩選條件組態的完整範本範例,請參閱《 AWS CloudFormation 使用者指南》中的具有兩個階段的管道和觸發組態。
pipeline:
name: MyServicePipeline
executionMode: PARALLEL
triggers:
- provider: CodeConnection
gitConfiguration:
sourceActionName: ApplicationSource
push:
- filePaths:
includes:
- projectA/**
- common/**/*.js
excludes:
- '**/README.md'
- '**/LICENSE'
- '**/CONTRIBUTING.md'
branches:
includes:
- feature/**
- release/**
excludes:
- mainline
- tags:
includes:
- release-v0
- release-v1
excludes:
- release-v2
pullRequest:
- events:
- CLOSED
branches:
includes:
- feature/**
- release/**
excludes:
- mainline
filePaths:
includes:
- projectA/**
- common/**/*.js
excludes:
- '**/README.md'
- '**/LICENSE'
- '**/CONTRIBUTING.md'
stages:
- name: Source
actions:
- name: ApplicationSource
configuration:
BranchName: mainline
ConnectionArn: arn:aws:codestar-connections:eu-central-1:111122223333:connection/fe9ff2e8-ee25-40c9-829e-65f85EXAMPLE
FullRepositoryId: monorepo-example
OutputArtifactFormat: CODE_ZIP