如何使用 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
我们的 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