要使用 AWS CloudFormation 模板来筛选组织 webhook 事件,请使用 AWS CodeBuild 项目的 ScopeConfiguration
属性。有关全局和组织 GitHub webhook 的更多信息,请参阅GitHub 全局和组织 webhook。
注意
AWS CloudFormation 不支持全局 webhook 和 GitHub Enterprise webhook。
AWS CloudFormation 模板的以下 YAML 格式部分创建四个筛选条件组。当这些筛选条件组的其中一个或全部评估为 True 时触发构建:
-
第一个筛选条件组使用与正则表达式
^refs/heads/main$
匹配的 Git 引用名称,指定由账户 ID 不为12345
的 GitHub 用户在分支上创建或更新的拉取请求。 -
第二个筛选条件组使用与正则表达式
^refs/heads/.*
匹配的 Git 引用名称,指定在名称与正则表达式READ_ME
匹配的文件上创建的推送请求。 -
第三个筛选条件组指定一个推送请求,其中包含与正则表达式
\[CodeBuild\]
匹配的 HEAD 提交消息。 -
第四个筛选条件组指定 GitHub Actions 工作流作业请求,其工作流名称与正则表达式
\[CI-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:5.0
Source:
Type: GITHUB
Location: source-location
Triggers:
Webhook: true
ScopeConfiguration:
Name: organization-name
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\]
- Type: FILE_PATH
Pattern: ^src/.+|^test/.+
- - Type: EVENT
Pattern: WORKFLOW_JOB_QUEUED
- Type: WORKFLOW_NAME
Pattern: \[CI-CodeBuild\]