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

标签 amazon-web-services continuous-integration aws-cloudformation devops aws-codebuild

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

  1. AWS 管理控制台

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

AWS console

  • AWS CLI
  • 对于 awscli 存在一个选项 --update-webhook (记录为 here )

        $ aws codebuild update-webhook --project-name myproject --branch-filter ^master$
    
  • 云形成
  • 在 CodeBuild cloudformation 模板中存在一个选项 Triggers > Webhook (记录为 here ),但此选项只是一个 bool 值,用于简单启用/禁用 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"
    

    关于amazon-web-services - 如何在 AWS CodeBuild cloudformation 模板中设置分支筛选器选项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50857928/

    相关文章:

    jenkins - Hudson gitorious 插件?

    c# - Azure devops 在部署时在多个数据库上执行 ef core (.Net core 3.0) 迁移 sql 脚本(来自项目存储库)

    macos - 无法创建目录/var/teamsserver

    python - 如何使用 boto3 部署 AWS 无服务器应用程序模型模板?

    json - 如何创建过滤多个源的 EventPattern(在 EventBridge 规则内)?

    ios - 使用 xcode 中的 KMS key 将文件上传到 Amazon S3

    amazon-web-services - 当前有 9 条规则的监听器当前正在使用标识符优先级为 10 的错误 ListenerRule

    python - 如何将 python ElasticSearch 包与 ECS 实例角色一起使用而不是传递凭据?

    amazon-web-services - 重写 Api Gateway websocket API 私有(private) http 与 ALB 集成中的目标路径

    amazon-web-services - AWS Event Bus 无法将日志从 AWS Lambda 写入自定义日志组上的 CloudWatch