如何在AWS CodeBuild云形态模板中设置分支过滤器选项?

dro*_*n22 12 continuous-integration amazon-web-services aws-cloudformation devops aws-codebuild

如果在CodeBuild项目中使用Github存储库作为源,则该Branch Filter选项允许仅为分支运行构建,分支的名称与特定正则表达式匹配.

  1. AWS管理控制台

在AWS管理控制台中,您可以在创建或编辑CodeBuild项目时配置分支过滤器:

AWS控制台

  1. AWS CLI

对于awscli存在一个选项--update-webhook(在此记录)

    $ aws codebuild update-webhook --project-name myproject --branch-filter ^master$
Run Code Online (Sandbox Code Playgroud)
  1. CloudFormation

在CodeBuild中,cloudformation模板存在一个选项Triggers > Webhook(此处记录),但此选项只是一个简单启用/禁用github webhook的布尔值.

Resources:
    MyCodeBuildProject:
    Type: AWS::CodeBuild::Project
    Properties:
        Name: myproject
        ...
        Triggers:
            Webhook: true
Run Code Online (Sandbox Code Playgroud)

所以我的问题是,如何直接在云信息模板中定义分支过滤器,而无需执行awscli命令或使用AWS管理控制台?

Raf*_*zcz 1

您可以尝试使用 AWS CodePipeline

        Stages:
            -
                Name: "Source"
                Actions:
                    -
                        Name: "Checkout"
                        ActionTypeId:
                            Category: "Source"
                            Owner: "ThirdParty"
                            Provider: "GitHub"
                            Version: "1"
                        Configuration:
                            Owner: !Ref "UsernameOrOrg"
                            Repo: !Ref "ProjectName"
                            Branch: "master"
                            OAuthToken: !Ref "GitHubOAuthToken"
                        OutputArtifacts:
                            -
                                Name: "checkout"
            -
                Name: "Build"
                Actions:
                    -
                        Name: "Build"
                        ActionTypeId:
                            Category: "Build"
                            Owner: "AWS"
                            Provider: "CodeBuild"
                            Version: "1"
                        Configuration:
                            ProjectName: !Ref "BuildProject"
                        InputArtifacts:
                            -
                                Name: "checkout"
Run Code Online (Sandbox Code Playgroud)

然后,您只需使用 CodePipeline 集成定义您的 CodeBuild 项目:

BuildProject:
    Type: "AWS::CodeBuild::Project"
    Properties:
       ... 
        Artifacts:
            Type: "CODEPIPELINE"
        Source:
            Type: "CODEPIPELINE"
Run Code Online (Sandbox Code Playgroud)