我们的 Jenkins 是在 aws 中设置的,但我们没有设法使用奴隶。由于平台很大,并且一些工件包含许多其他工件,因此当多个开发人员提交到不同的存储库并且被迫同时运行多个作业时,我们的 Jenkins 就会达到极限。
目标是: - 继续使用 jenkins,因为我们的流程是基于它记录的,并且我们使用许多插件,例如测试结果总结及github集成 - 在 codebuild 中运行作业并在 jenkins 中获取反馈以提高性能
有这方面的最佳实践吗?
最佳答案
我们执行了以下步骤来在 jenkins 之外构建大型工件: - 安装 jenkins codebuild 插件 - 创建 Jenkins 管道 - 为 s3 中的 Maven 构建存储 settings.xml - 将访问权限存储在系统管理器参数中以在代码构建和 Maven 中使用
创建具有必要权限和以下功能的代码构建项目: -- 从s3获取settings.xml -- 使用必要的访问数据运行 Maven -- 将测试结果存储在 s3 中
创建具有以下功能的 jenkinsfile: -- 获取 commitID 并用它运行 codebuild -- 从 s3 获取生成的测试结果文件并将其传递给 jenkins -- 从 s3 中删除生成的文件 -- 将文件传递给 jenkins 以显示测试结果
通过这种方法,我们成功地将运行时间缩短至 5 分钟。
我们面临的下一个挑战是在 Java 微服务之上构建角度应用程序,创建 Docker 镜像并将其推送到不同的环境。该作业在 jenkins 中运行了大约 25 分钟。
我们执行了以下步骤在 jenkins 之外构建 docker 镜像: - 安装 jenkins codebuild 插件 - 创建 Jenkins 管道 - 为 s3 中的 Maven 构建存储 settings.xml - 将访问权限存储在系统管理器参数中以在代码构建和 Maven 中使用
创建具有必要权限和以下功能的代码构建项目: -- 从s3获取settings.xml -- 在所有环境中登录 ecr -- 构建角度应用程序 -- 构建java应用程序 -- 复制 docker 构建所需的文件 -- 构建docker镜像 -- 推送到所有环境
创建具有以下功能的 jenkinsfile: -- 获取两个存储库的分支名称以从中构建 docker 镜像 -- 获取分支最新的commitID -- 使用两个 commitID 调用代码构建项目(请注意,主存储库将需要构建规范)
通过这种方法,我们成功地将运行时间缩短至 5 分钟。
示例代码位于:https://github.com/felipeloha/samples/tree/master/jenkins-codebuild
关于amazon-web-services - 如何使用 aws codebuild 来构建大型 java 工件和 docker 镜像来提高 jenkins 性能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57000686/