

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

# 使用程式碼推送或提取請求事件類型新增觸發
<a name="pipelines-filter"></a>

您可以設定管道觸發條件的篩選條件，以啟動不同 Git 事件的管道執行，例如標籤或分支推送、特定檔案路徑的變更、開啟特定分支的提取請求等。您可以使用 AWS CodePipeline 主控台或 中的 **create-pipeline**和 **update-pipeline**命令 AWS CLI 來設定觸發篩選條件。

**注意**  
動作組態`BranchName`欄位定義單一分支，而具有篩選條件的觸發條件可用於您指定的任何分支。對於使用觸發來透過推送或提取請求篩選分支的管道，管道不會在動作組態中使用預設`BranchName`欄位分支。不過，手動啟動管道時，動作組態中 `BranchName` 欄位的分支是預設值。如需範例，請參閱 [5：在預設動作組態 BranchName 用於手動啟動時設定的觸發](pipelines-triggers.md#example-filter-default-manual)。

您可以為下列觸發類型指定篩選條件：
+ **推送**

  當變更推送到您的來源儲存庫時，推送觸發會啟動管道。執行將使用您推送*到*的分支中的遞交 （即目的地分支）。您可以篩選分支、檔案路徑或 Git 標籤上的推送觸發。
+ **提取請求**

  當您的來源儲存庫中開啟、更新或關閉提取請求時，提取請求觸發會啟動管道。執行將使用來自您*提取*來源分支的遞交 （即來源分支）。您可以在分支和檔案路徑上篩選提取請求觸發。

  提取請求支援的事件類型如下。會忽略所有其他提取請求事件。
  + 已開啟
  + Updated
  + 關閉 （合併）
**注意**  
某些提取請求事件行為可能因提供者而有所不同。如需詳細資訊，請參閱[依供應商提取觸發的請求事件](pipelines-triggers.md#pipelines-filter-pullrequest-events)。

管道定義可讓您在相同的推送觸發組態中結合不同的篩選條件。如需管道定義的詳細資訊，請參閱 [新增推送和提取請求事件類型的篩選條件 (CLI)](#pipelines-filter-cli)。如需欄位定義的清單，請參閱本指南中*管道結構參考*中的[觸發](pipeline-requirements.md#pipeline.triggers)條件。

**Topics**
+ [新增推送和提取請求事件類型的篩選條件 （主控台）](#pipelines-filter-console)
+ [新增推送和提取請求事件類型的篩選條件 (CLI)](#pipelines-filter-cli)
+ [新增推送和提取請求事件類型的篩選條件 (CloudFormation 範本）](#pipelines-filter-cfn)

## 新增推送和提取請求事件類型的篩選條件 （主控台）
<a name="pipelines-filter-console"></a>

您可以使用 主控台為推送事件新增篩選條件，並包含或排除分支或檔案路徑。

**新增篩選條件 （主控台）**

1. 登入 AWS 管理主控台 並開啟 CodePipeline 主控台，網址為 https：//[http://console.aws.amazon.com/codesuite/codepipeline/home](https://console.aws.amazon.com/codesuite/codepipeline/home)。

   與 AWS 您的帳戶相關聯的所有管道的名稱和狀態都會顯示。

1. 在 **Name (名稱)** 中，選擇您想編輯的管道名稱。否則，請在管道建立精靈上使用這些步驟。

1. 在管道詳細資訊頁面上，選擇 **Edit (編輯)**。

1. 在**編輯**頁面上，選擇您要編輯的來源動作。選擇**編輯觸發條件**。選擇**指定篩選條件**。

1. 在**事件類型**中，從下列選項中選擇**推送**。
   + 選擇**推送**，在將變更推送至來源儲存庫時啟動管道。選擇此選項可讓欄位指定分支和檔案路徑或 Git 標籤的篩選條件。
   + 選擇**提取請求**，以在來源儲存庫中開啟、更新或關閉提取請求時啟動管道。選擇此選項可讓欄位指定目的地分支和檔案路徑的篩選條件。

1. 在**推送**下，在**篩選條件類型**中，選擇下列其中一個選項。
   + 選擇**分支**以指定觸發器監控的來源儲存庫中的分支，以了解何時啟動工作流程執行。在**包含**中，輸入您要為觸發組態指定的 glob 格式分支名稱模式，以在指定分支的變更時啟動管道。在**排除**中，以 glob 格式輸入分支名稱的 regex 模式，您要為觸發組態指定此模式來忽略和不要在指定分支的變更時啟動管道。如需詳細資訊，請參閱[使用語法中的 glob 模式](syntax-glob.md)。
**注意**  
如果包含和排除兩者的模式相同，則預設為排除模式。

     您可以使用 glob 模式來定義分支名稱。例如，使用 `main*` 來比對以 開頭的所有分支`main`。如需詳細資訊，請參閱[使用語法中的 glob 模式](syntax-glob.md)。

     對於推送觸發，指定您要推送*的*分支，也就是*目的地*分支。對於提取請求觸發，指定您要開啟提取請求的目標分支。
   + （選用） 在**檔案路徑**下，為您的觸發指定檔案路徑。視需要在**包含**和**排除**中輸入名稱。

     您可以使用 glob 模式來定義檔案路徑名稱。例如，使用 `prod*`來比對以 開頭的所有檔案路徑`prod`。如需詳細資訊，請參閱[使用語法中的 glob 模式](syntax-glob.md)。
   + 選擇**標籤**以設定管道觸發組態，以 Git 標籤開頭。在**包含**中，輸入您要為觸發組態指定的 glob 格式標籤名稱模式，以在發行指定的標籤時啟動管道。在**排除**中，輸入您要為觸發組態指定的 glob 格式標籤名稱的規則運算式模式，以忽略指定標籤或標籤的發行時不要啟動管道。如果包含和排除兩者的標籤模式相同，則預設為排除標籤模式。

1. 在**推送**下，在**篩選條件類型**中，選擇下列其中一個選項。
   + 選擇**分支**以指定觸發器監控的來源儲存庫中的分支，以了解何時啟動工作流程執行。在**包含**中，輸入您要為觸發組態指定的 glob 格式分支名稱模式，以在指定分支的變更時啟動管道。在**排除**中，以 glob 格式輸入分支名稱的 regex 模式，您要為觸發組態指定此模式來忽略和不要在指定分支的變更時啟動管道。如需詳細資訊，請參閱[使用語法中的 glob 模式](syntax-glob.md)。
**注意**  
如果包含和排除兩者的模式相同，則預設為排除模式。

     您可以使用 glob 模式來定義分支名稱。例如，使用 `main*` 來比對以 開頭的所有分支`main`。如需詳細資訊，請參閱[使用語法中的 glob 模式](syntax-glob.md)。

     對於推送觸發，指定您要推送*的*分支，也就是*目的地*分支。對於提取請求觸發，指定您要開啟提取請求的目標分支。
   + （選用） 在**檔案路徑**下，為您的觸發指定檔案路徑。視需要在**包含**和**排除**中輸入名稱。

     您可以使用 glob 模式來定義檔案路徑名稱。例如，使用 `prod*`來比對以 開頭的所有檔案路徑`prod`。如需詳細資訊，請參閱[使用語法中的 glob 模式](syntax-glob.md)。
   + 選擇**提取請求**，將管道觸發組態設定為從您指定的提取請求事件開始。

## 新增推送和提取請求事件類型的篩選條件 (CLI)
<a name="pipelines-filter-cli"></a>

您可以更新管道 JSON 以新增觸發條件的篩選條件。

若要使用 AWS CLI 建立或更新管道，請使用 `create-pipeline`或 `update-pipeline`命令。

下列範例 JSON 結構提供 下欄位定義的參考`create-pipeline`。

如需欄位定義的清單，請參閱本指南中*管道結構參考*中的[觸發](pipeline-requirements.md#pipeline.triggers)條件。

```
{
    "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"
                        }
                    }
                ]
            }
        ]
    }
}
```

## 新增推送和提取請求事件類型的篩選條件 (CloudFormation 範本）
<a name="pipelines-filter-cfn"></a>

您可以在 中更新管道資源 CloudFormation ，以新增觸發條件篩選。

下列範例範本程式碼片段提供觸發條件欄位定義的 YAML 參考。如需欄位定義的清單，請參閱本指南中*管道結構參考*中的[觸發](pipeline-requirements.md#pipeline.triggers)條件。

如需連線來源和觸發篩選條件組態的完整範本範例，請參閱《 * CloudFormation 使用者指南*》中的[具有兩個階段的管道和觸發組態](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codepipeline-pipeline.html#aws-resource-codepipeline-pipeline--examples--Pipeline_with_two_stages_and_trigger_configuration)。

```
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
```