我在CodePipeline中使用Github版本1作为源代码(由于组织限制,无法使用版本2)。我需要CodePipeline仅在创建标记时触发,而不是在每次提交时触发。我已经在CodePipeline中设置了使用Webhooks选项的触发器,在Webhooks中,我选择了“让我选择单个事件”,在下面我选中了Branch or tag creation
和Releases
。但是当我创建一个新标签时,CodePipeline不会触发。当我使用Pushes
选项时,它工作得很好,并在提交时触发管道。
当我检查Recent Deliveries
时,我可以看到发布操作得到了200个响应,但是管道没有触发。
我甚至尝试通过CLI创建webhook,就像在这个堆栈溢出中提到的那样,但它不起作用:Trigger AWS CodePipeline by GitHub release Webhook
有谁可以帮助我配置webhook,以便在创建标记时触发AWS CodePipeline?
1条答案
按热度按时间vcirk6k61#
好消息是,这是可能的!坏消息是,您需要AWS之外的其他工具。里面全是黑客
CodePipeline的github集成似乎只适用于分支-它没有查找标记的方法。
CodePipeline能够监视ECR repo的更改,但它只监视特定的标记(默认为latest)。
我想要的是能够创建一个具有一定前缀的标签(例如。我想部署到的环境的名称),并让它自动登陆到那里。
我在CircleCI上创建了一个
git tag
工作流(github操作也应该可以工作),并让它为链接到我的环境的ECR repo推送latest
标签(例如:分级)。./.circleci/config.yml
./.circleci/push-ecr.sh
Codepipeline的
Source
阶段有两个部分:Codepipeline的
Build
阶段从两个输入源读取,github存储库被设置为primary
源,这就是它如何找到buildspec. yml文件的唯一目的是为部署阶段创建工件。我很想完全跳过构建阶段,但是如果它在s3中找不到工件,那么它甚至不会尝试部署。CodePipeline的部署阶段不需要任何额外的考虑
Pipeline