本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
GitHub Webhook 事件
您可以使用 Webhook 篩選群組來指定哪些 GitHub Webhook 事件會觸發組建。例如,您可以指定僅針對特定分支的更改來觸發組建。
您可以建立一或多個 Webhook 篩選群組來指定哪些 Webhook 事件會觸發組建。如果一或多個篩選群上的所有篩選條件評估為 true,則會觸發組建。當您建立篩選群組時,您可以指定這些項目:
- 一個事件
-
對於 GitHub,您可以選擇以下一或多個事件:
PUSH
、PULL_REQUEST_CREATED
、PULL_REQUEST_UPDATED
、PULL_REQUEST_REOPENED
和PULL_REQUEST_MERGED
。Webhook 事件類型位在 Webhook 承載的X-GitHub-Event
標頭中。在X-GitHub-Event
標頭中,您可能會看到pull_request
或push
。若為提取請求事件,類型位在 Webhook 事件承載的action
欄位中。下表顯示X-GitHub-Event
標頭值和 Webhook 提取請求承載action
欄位值如何映射到可用的事件類型。X-GitHub-Event
標頭值Webhook 事件承載 action
值事件類型 pull_request
opened
PULL_REQUEST_CREATED
pull_request
reopened
PULL_REQUEST_REOPENED
pull_request
synchronize
PULL_REQUEST_UPDATED
pull_request
closed
,而merged
欄位為true
PULL_REQUEST_MERGED
push
N/A PUSH
注意
PULL_REQUEST_REOPENED
事件類型僅能搭配 GitHub 和 GitHub Enterprise Server 使用。 - 一或多個選用的篩選條件
-
使用規則表達式來指定篩選條件。若要讓事件觸發組建,相關聯的每個篩選條件必須評估為 true。
ACTOR_ACCOUNT_ID
(ACTOR_ID
在主控台是)-
當 GitHub 或 GitHub Enterprise Server 帳户 ID 符合規則表達式模式時,Webhook 事件會觸發組建。此值位於 Webhook 承載之
sender
物件的id
屬性中。 HEAD_REF
-
:當標頭參考符合規則表達式模式時 (例如
refs/heads/branch-name
或者refs/tags/tag-name
。若為推送事件,參考名稱位在 Webhook 承載的ref
屬性中。若為提取請求事件,分支名稱位在 Webhook 承載之head
物件的ref
屬性中。 BASE_REF
-
:當基本參考符合規則表達式模式時 (例如
refs/heads/branch-name
。BASE_REF
篩選條件僅可搭配提取請求事件使用。分支名稱位在 Webhook 承載之base
物件的ref
屬性中。 FILE_PATH
-
當變更的檔案的路徑符合規則表達式模式時,Webhook 會觸發組建。
FILE_PATH
篩選條件可以用於 GitHub 推送和提取請求事件和 GitHub Enterprise Server 推送事件。它不能與 GitHub Enterprise Server 提取請求事件一起使用。 COMMIT_MESSAGE
-
:當標頭提交信息符合規則表達式模式時,Webhook 會觸發組建。
COMMIT_MESSAGE
篩選條件可以用於 GitHub 推送和提取請求事件和 GitHub Enterprise Server 推送事件。它不能與 GitHub Enterprise Server 提取請求事件一起使用。
注意
您可以在您 GitHub 儲存庫的 Webhook 設定中找到 Webhook 承載。
篩選 GitHub Webhook 事件 (主控台)
In主來源 Webhook 事件下,選取下列項目。此部分僅在您選擇在我的 GitHub 帳户中的儲存庫來獲取來源儲存庫。
-
當您建立專案時,請選取 Rebuild every time a code change is pushed to this repository (在每次將程式碼變更推送至此儲存庫時重建)。
-
從 Event type (事件類型),選擇一或多個事件。
-
若要篩選事件觸發組建的時間,請在 Start a build under these conditions (在這些情況下開始組建) 下新增一或多個選用的篩選條件。
-
若要篩選何時不觸發事件,請在 Don't start a build under these conditions (在這些情況下不開始組建) 下新增一或多個選用的篩選條件。
-
選擇新增篩選條件組(如果需要) 新增另一個篩選組。
如需詳細資訊,請參閱「」建立組建專案 (主控台)和WebhookFilter中的AWS CodeBuildAPI 參考。
在這個範例中,Webhook 篩選群組僅針對提取請求觸發組建:

在有兩個 Webhook 篩選群組的範例中,當一個或兩個篩選群組評估為 true 時,就會觸發組建:
-
第一個篩選群組指定在分支上建立、更新或重新開啟的提取請求,並且這些分支的 Git 參考名稱符合規則表達式
^refs/heads/main$
,而標頭參考符合^refs/heads/branch1$
。 -
第二個篩選群組在分支上指定推送請求,並且這些分支的 Git 參考名稱符合規則表達式
^refs/heads/branch1$
。

在這個範例中,Webhook 篩選群組針對所有請求 (標籤事件除外) 觸發組建。

在這個範例中,只有在檔案名稱符合規則表達式 ^buildspec.*
的檔案變更時,Webhook 篩選群組才會觸發組建。

在這個範例中,只有當指定的 GitHub 或 GitHub Enterprise Server 使用者進行變更,而且其帳戶 ID 符合規則表達式 actor-account-id
時,Webhook 篩選群組才會觸發建置。
注意
有關如何尋找您的 GitHub 帳戶 ID 的資訊,請參閱 https://api.github.com/users/user-name
,其中 user-name
是您的 GitHub 使用者名稱。

在此範例中,當 head 提交訊息符合規則運算式 \[CodeBuild\]
時,webhook 篩選群組會觸發推送事件的建置。

篩選 GitHub Webhook 事件 (開發套件)
若要使用 AWS CodeBuild 開發套件來篩選 Webhook 事件,請在 CreateWebhook
或 UpdateWebhook
API 方法的請求語法中使用 filterGroups
欄位。如需詳細資訊,請參閱「」WebhookFilter中的CodeBuild API 參考。
若要建立 Webhook 篩選條件來只針對提取請求觸發組建,請在請求語法插入以下程式碼:
"filterGroups": [ [ { "type": "EVENT", "pattern": "PULL_REQUEST_CREATED, PULL_REQUEST_UPDATED, PULL_REQUEST_REOPENED, PULL_REQUEST_MERGED" } ] ]
若要建立 Webhook 篩選條件來只針對指定的分支觸發組建,請使用 pattern
參數指定規則表達式來篩選分支名稱。在有兩個篩選群組的範例中,當一個或兩個篩選群組評估為 true 時,就會觸發組建:
-
第一個篩選群組指定在分支上建立、更新或重新開啟的提取請求,並且這些分支的 Git 參考名稱符合規則表達式
^refs/heads/main$
,而標頭參考符合^refs/heads/myBranch$
。 -
第二個篩選群組在分支上指定推送請求,並且這些分支的 Git 參考名稱符合規則表達式
^refs/heads/myBranch$
。
"filterGroups": [ [ { "type": "EVENT", "pattern": "PULL_REQUEST_CREATED, PULL_REQUEST_UPDATED, PULL_REQUEST_REOPENED" }, { "type": "HEAD_REF", "pattern": "^refs/heads/myBranch$" }, { "type": "BASE_REF", "pattern": "^refs/heads/main$" } ], [ { "type": "EVENT", "pattern": "PUSH" }, { "type": "HEAD_REF", "pattern": "^refs/heads/myBranch$" } ] ]
您可以使用 excludeMatchedPattern
參數來指定哪些事件不會觸發組建。例如,在這個範例中,將針對所有請求 (標籤事件除外) 觸發組建。
"filterGroups": [ [ { "type": "EVENT", "pattern": "PUSH, PULL_REQUEST_CREATED, PULL_REQUEST_UPDATED, PULL_REQUEST_REOPENED, PULL_REQUEST_MERGED" }, { "type": "HEAD_REF", "pattern": "^refs/tags/.*", "excludeMatchedPattern": true } ] ]
您可以建立篩選條件來指定只有在檔案名稱符合 pattern
引數中的規則表達式的檔案變更時,才觸發組建。在這個範例中,篩選群組指定只有在檔案名稱符合規則表達式 ^buildspec.*
的檔案變更時,才觸發組建。
"filterGroups": [ [ { "type": "EVENT", "pattern": "PUSH" }, { "type": "FILE_PATH", "pattern": "^buildspec.*" } ] ]
您可以建立篩選條件來指定只有在指定的 GitHub 或 GitHub Enterprise Server 使用者進行變更,並且其帳戶 ID 為 actor-account-id
時,才觸發組建。
注意
有關如何尋找您的 GitHub 帳戶 ID 的資訊,請參閱 https://api.github.com/users/user-name
,其中 user-name
是您的 GitHub 使用者名稱。
"filterGroups": [ [ { "type": "EVENT", "pattern": "PUSH, PULL_REQUEST_CREATED, PULL_REQUEST_UPDATED, PULL_REQUEST_REOPENED, PULL_REQUEST_MERGED" }, { "type": "ACTOR_ACCOUNT_ID", "pattern": "actor-account-id" } ] ]
您可以建立篩選條件,只有在 head 提交訊息符合模式引數中的規則運算式時,才觸發組建。在這個範例中,篩選群組指定只有在推送事件的 head 遞交訊息符合規則表達式 \[CodeBuild\]
時,才觸發組建。
"filterGroups": [ [ { "type": "EVENT", "pattern": "PUSH" }, { "type": "COMMIT_MESSAGE", "pattern": "\[CodeBuild\]" } ] ]
篩選 GitHub Webhook 事件 (AWS CloudFormation)
若要使用 AWS CloudFormation 範本來篩選 Webhook 事件,請使用 AWS CodeBuild 專案的 FilterGroups
屬性。在 AWS CloudFormation 範本中,以下 YAML 格式的部分建立兩個篩選群組。當其中一個或兩個評估為 true 時,它們會一起觸發組建:
-
第一個篩選群組指定在分支上建立或更新的提取請求,並且這些分支的 Git 參考名稱符合規則表達式
^refs/heads/main$
,而且是由帳戶 ID 不是12345
的 GitHub 使用者所建立或更新。 -
第二個篩選群組指定在分支中的檔案上建立的推送請求,並且這些檔案的名稱符合規則表達式
READ_ME
,而分支的 Git 參考名稱符合規則表達式^refs/heads/.*
。 -
第三個篩選群組會指定其 head 提交訊息符合規則運算式
\[CodeBuild\]
的推送請求。
CodeBuildProject: Type: AWS::CodeBuild::Project Properties: Name: MyProject ServiceRole:
service-role
Artifacts: Type: NO_ARTIFACTS Environment: Type: LINUX_CONTAINER ComputeType: BUILD_GENERAL1_SMALL Image: aws/codebuild/standard:4.0 Source: Type: GITHUB Location:source-location
Triggers: Webhook: true FilterGroups: - - Type: EVENT Pattern: PULL_REQUEST_CREATED,PULL_REQUEST_UPDATED - Type: BASE_REF Pattern: ^refs/heads/main$ ExcludeMatchedPattern: false - Type: ACTOR_ACCOUNT_ID Pattern: 12345 ExcludeMatchedPattern: true - - Type: EVENT Pattern: PUSH - Type: HEAD_REF Pattern: ^refs/heads/.* - Type: FILE_PATH Pattern: READ_ME ExcludeMatchedPattern: true - - Type: EVENT Pattern: PUSH - Type: COMMIT_MESSAGE Pattern: \[CodeBuild\]