Amazon web services 如何在AWS CodeBuild cloudformation模板中设置分支过滤器选项?
如果在CodeBuild项目中使用Github存储库作为源,则Amazon web services 如何在AWS CodeBuild cloudformation模板中设置分支过滤器选项?,amazon-web-services,continuous-integration,amazon-cloudformation,devops,aws-codebuild,Amazon Web Services,Continuous Integration,Amazon Cloudformation,Devops,Aws Codebuild,如果在CodeBuild项目中使用Github存储库作为源,则分支筛选器选项只允许为名称与特定正则表达式匹配的分支运行构建 AWS管理控制台 在AWS管理控制台中,您可以在创建或编辑代码生成项目时配置分支筛选器: AWS CLI 对于awscli,存在一个选项——更新webhook(有文档记录) 云层形成 在CodeBuild cloudformation模板中存在一个选项Triggers>Webhook(有文档记录),但该选项只是一个布尔值,用于简单地启用/禁用github Webhook
分支筛选器
选项只允许为名称与特定正则表达式匹配的分支运行构建
——更新webhook
(有文档记录)
Triggers>Webhook
(有文档记录),但该选项只是一个布尔值,用于简单地启用/禁用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"
下面是一个使用触发器和webhook过滤器的简单示例,过滤器组模式也可以类似于
^refs/heads/*
:
AWSTemplateFormatVersion:“2010-09-09”
描述:“代码构建项目和IAM角色”
参数:
图片:
类型:字符串
描述:“docker图像的名称。”
默认值:“我的图像”
资源:
代码构建角色:
类型:AWS::IAM::角色
特性:
假设政策文件:
版本:“2012-10-17”
声明:
效果:允许
负责人:
服务:codebuild.amazonaws.com
行动:sts:假设角色
政策:
-PolicyName:“代码构建服务策略”
政策文件:
版本:“2012-10-17”
声明:
-效果:“允许”
行动:
-“ecr:BatchCheckLayerAvailability”
-“ecr:CompleteLayerUpload”
-“ecr:描述图像”
-“ecr:GetAuthorizationToken”
-“ecr:InitiateLayerUpload”
-“ecr:列表图像”
-“ecr:PutImage”
-“ecr:上载LayerPart”
-“日志:”
资源:“*”
代码构建项目:
类型:AWS::CodeBuild::Project
特性:
人工产品:
类型:无_工件
环境:
ComputeType:“构建\u常规1\u小型”
图片:“aws/codebuild/docker:18.09.0”
类型:LINUX\u容器
服务角色:!GetAtt CodeBuildRole.Arn
资料来源:
类型:GITHUB
地点:“https://github.com/ORG/REPO.git"
BuildSpec:“codebuild/create\u docker\u image.yml”
触发因素:
网络钩子:真的
过滤器组:
--类型:事件
模式:推
-类型:HEAD\u REF
图案:大师
另见:
我在代码管道文档中找不到要传递给模板的OAuthtoken是什么。我从哪里得到这个值呢?这可能是我自己在努力寻找的最棘手的AWS文档页面之一;)您需要从中创建令牌,然后单击generate token。您需要选择作用域admin:repo_hook。我无法调用CreateWebhook,原因:找不到服务器类型github的访问令牌。如何在CodeBuild中引用访问令牌?我曾经在UI中设置过它,在我的CF模板中不需要它,但我明白你的意思。一定有办法做到这一点,但对我来说,这是通过AWS控制台>代码构建和手动授权的Github帐户实现的
BuildProject:
Type: "AWS::CodeBuild::Project"
Properties:
...
Artifacts:
Type: "CODEPIPELINE"
Source:
Type: "CODEPIPELINE"