在AWS CodePipeline中使用Jenkins构建多个Gradle项目

6
我有一个Gradle项目,包括一个主项目和两个使用includeFlat指令的其他项目。这3个项目中的每一个都在GitHub上拥有自己的存储库。要构建它,我将这3个项目全部检出到一个共同的顶层文件夹中,然后cd进入主项目并运行gradle build。非常好用! 现在我需要将生成的应用程序部署到AWS EB(弹性Beanstalk),当我在本地生成工件,然后手动部署时,它也非常好用。我想自动化这个过程,所以我正在尝试使用CodePipelines + Jenkins进行设置,如此文档所述,并针对Gradle进行调整。
问题在于,如果我在管道中指定了3个来源,则我的项目会堆叠在一起,从而在Jenkins工作区创建混乱。我需要以某种方式配置每个项目以将其输出到Jenkins工作空间中的自己的目录中,但至少在UI中我没有看到任何方法可以实现它。 当然,即使我实现了想要的结果,我还需要以某种方式cd进入主目录以运行gradle build,我也不确定该如何做。 附言:@Phil提供的建议非常好,但不幸的是,CodePipeline目前不支持 Git子模块或子树。

有趣的想法,但我更喜欢扁平化的项目结构。 - Bostone
1
所以问题是我无法控制CodePipeline如何调用git clone,导致我的子模块为空文件夹。有一个--recursive开关,但如何应用它呢?附注:看起来不太好 https://forums.aws.amazon.com/thread.jspa?threadID=248267 - Bostone
链接回AWS论坛上相同的问题https://forums.aws.amazon.com/thread.jspa?threadID=265274 - Bostone
我完全不了解AWS,所以我不确定,但是在构建过程中是否没有办法执行任意命令,比如 git submodule update --init - Phil
虽然不是最优雅的解决方案,但您能否忽略/删除通过Pipeline传递的源代码,并通过bash命令步骤在Jenkins实例内执行多个git clone操作? - Milk
显示剩余4条评论
1个回答

0

当任何3个仓库中的更改发生时,我会开始常见构建。延迟5分钟,以便进行单个构建,即使对多个仓库进行了更改。

我看不到处理部署的好方法,除非使用eb deploy...旧方法...请在您的Jenkins机器上安装AWS工具。创建在成功构建后触发的部署作业。并放置执行部署的bash脚本。请提供有关您的部署的更多详细信息,这样我就可以帮助您编写部署脚本。


Jenkins已经在EC2上运行。我不清楚你的意图是什么?我认为我已经清楚地陈述了我的问题:3个GitHub项目,1个主项目,2个子项目(包括Flat)。我认为你提出的方案基本上就是我在主帖子评论中所描述的:在涉及的项目上设置触发器,忽略初始代码,并从gradle脚本(在你的情况下是bash)进行scm。但现在对我来说这并不值得麻烦,很遗憾。 - Bostone
在您的Jenkins安装AWS工具,使用eb实用程序。创建一个部署您的构件的作业。或者换句话说 - 在Jenkins上执行您手动执行的操作。也许可以使用脚本,而不是在AWS控制台中进行操作,但这只是不同的工具。 - Michał Zaborowski

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接