代码管道在pull请求上构建分支

问题描述 投票:-1回答:3

我正在尝试创建一个代码管道,当我向AWS中的主分支发出拉取请求时,它将构建我的分支。我有很多开发人员在我的组织中工作,所有开发人员都在他们自己的分支上工作。我对创建lambda函数不是很熟悉。希望有一个解决方案

amazon-web-services aws-codepipeline aws-codebuild
3个回答
0
投票

每次创建新的pull-request时,您都可以动态创建管道。查找CodeCommit触发器(在旧的CodePipeline UI中),您需要lambda。

基本上它的工作方式如下:复制现有管道并更新源分支。

这不是最好的,但是afaik是做你想做的事的唯一方法。

我在那里,不会推荐它,原因如下:

  • 我在我的区域达到了20的限制:“设置变化检测的最大管道数量设置为定期检查源更改” - 但是,你肯定想要这个功能(https://docs.aws.amazon.com/codepipeline/latest/userguide/limits.html
  • 分支删除的触发器无法正常工作,因此当分支已合并到主分支时,您无法删除已创建的管道。

如果您需要如您所述的工作流程,我建议您使用Github.com。非常遗憾。


0
投票

我们可以通过以下方法获得动态分支支持。

AWS代码管道的一个限制是我们必须在创建管道时指定分支名称。但是,我们可以使用下面显示的架构来克服此问题。

flow diagram

创建一个Lambda函数,它将GitHub web-hook数据作为输入,使用boto3将其与AWS管道集成(拉动管道并更新),使用API​​网关将Lambda函数作为休息调用进行调用,最后创建GitHub存储库的Web钩子。

外部链接:

相关主题:Dynamically change branches on AWS CodePipeline


0
投票

我最近实现了一种方法,它使用CodeBuild GitHub webhook支持来运行初始单元测试和构建,然后将源存储库和构建的工件作为压缩存档发布到S3。

然后,您可以将S3存档用作CodePipeline中的源,然后您可以通过集成测试,暂存部署等转换PR工件和代码......

这是一个非常强大的模式,虽然这里有一个陷阱,如果你一次创建了大量的pull请求,你可以让CodePipeline执行被取代,因为一次只能执行一个给定的一个阶段(这个实际上是一个非常重要的属性,特别是如果您的集成测试针对共享资源运行,并且您不希望应用程序的多个实例同时运行数据设置/拆卸任务)。为了解决这个问题,我在CodeBuild发布S3工件时向SQS FIFO队列发布S3通知,然后轮询队列,将每个工件复制到触发CodePipeline的不同S3位置,但前提是当前没有等待的执行在第一个CodePipeline源阶段之后执行。

© www.soinside.com 2019 - 2024. All rights reserved.