如何使用 aws codebuild 提高 jenkins 性能以构建大型 java 工件和 docker 图像?

How can I improve jenkins performance with aws codebuild to build big java artifacts and docker images?

我们的 Jenkins 是在 aws 中设置的,我们没有设法使用奴隶。由于平台很大,一些工件包含许多其他工件,当多个开发人员提交到不同的存储库时,我们的 jenkins 达到了他的极限,它被迫 运行 同时处理多个作业。

目的是: - 继续使用 jenkins,因为我们的流程是基于它记录的,并且我们使用许多插件,例如测试结果总结和 github 集成 - 运行 codebuild 中的工作并在 jenkins 中获得反馈以提高性能

是否有这方面的最佳实践?

我们执行了以下步骤来在 jenkins 之外构建大型工件: - 安装 jenkins codebuild 插件 - 创建詹金斯管道 - 为 s3 中的 maven 构建存储 settings.xml - 在系统管理器参数中存储访问以在代码构建和 Maven

中使用
  • 创建具有必要权限和以下功能的代码构建项目: -- 从 s3 获取 settings.xml -- 运行 具有必要访问数据的 maven -- 在 s3

  • 中存储测试结果
  • 创建具有以下功能的 jenkinsfile: -- 获取 commitID 和 运行 codebuild -- 从 s3 获取生成的测试结果文件并将其传递给 jenkins -- 从 s3 中删除生成的文件 -- 将文件传递给 jenkins 以显示测试结果

通过这种方法,我们设法将运行时间减少到 5 分钟。

我们面临的下一个挑战是在 java 微服务之上构建和 angular 应用程序,创建 docker 图像并将其推送到不同的环境。这项工作在詹金斯 运行 大约需要 25 分钟。

我们执行以下步骤在 jenkins 之外构建 docker 图像: - 安装 jenkins codebuild 插件 - 创建詹金斯管道 - 为 s3 中的 maven 构建存储 settings.xml - 在系统管理器参数中存储访问以在代码构建和 Maven

中使用
  • 创建具有必要权限和以下功能的代码构建项目: -- 从 s3 获取 settings.xml -- 在所有环境中登录到 ecr -- 构建 angular 应用程序 -- 构建 java 应用程序 -- 复制 docker 构建所需的文件 -- 构建 docker 图像 -- 推送到所有环境

  • 创建具有以下功能的 jenkinsfile: -- 获取两个存储库的分支名称以从中构建 docker 图像 -- 获取分支最新的commitID -- 使用两个 commitID 调用代码构建项目(注意主存储库将需要构建规范)

通过这种方法,我们设法将运行时间减少到 5 分钟。

示例代码在:https://github.com/felipeloha/samples/tree/master/jenkins-codebuild