如果将Github存储库用作CodeBuild项目中的源代码,则Branch Filter选项仅允许为名称与某个正则表达式匹配的分支运行构建。


AWS管理控制台


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

amazon-web-services - 如何在AWS CodeBuild cloudformation模板中设置分支过滤器选项?-LMLPHP


AWS CLI


对于awscli,存在一个选项--update-webhook(已记录为here

    $ aws codebuild update-webhook --project-name myproject --branch-filter ^master$



云形成


在CodeBuild cloudformation模板中,有一个选项Triggers > Webhook(已记录为here),但是此选项只是一个布尔值,用于简单地启用/禁用github webhook。

Resources:
    MyCodeBuildProject:
    Type: AWS::CodeBuild::Project
    Properties:
        Name: myproject
        ...
        Triggers:
            Webhook: true


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

最佳答案

您可以尝试使用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"


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

BuildProject:
    Type: "AWS::CodeBuild::Project"
    Properties:
       ...
        Artifacts:
            Type: "CODEPIPELINE"
        Source:
            Type: "CODEPIPELINE"

07-24 09:39
查看更多