gpt4 book ai didi

jenkins - 将 Jenkins 构建 Docker 化——从机作为容器还是构建为容器?

转载 作者:行者123 更新时间:2023-12-02 12:28:57 25 4
gpt4 key购买 nike

我正在努力找出使用 Docker 在 Jenkins CI/CD 基础设施中进行容器化构建的最佳策略。据我所知,我有两个选择:

(1) 使用通过 Docker 插件在 Docker 主机上按需配置的临时从站:https://wiki.jenkins-ci.org/display/JENKINS/Docker+Plugin一旦构建完成,从属设备就会被处置。因此,只有一个构建可以在单个从属设备上运行。

(2) 使用使用 CloudBees Docker 自定义构建环境插件在 Docker 容器内运行构建的静态从属设备(例如虚拟机):https://wiki.jenkins-ci.org/display/JENKINS/CloudBees+Docker+Custom+Build+Environment+Plugin因此,多个(隔离的)构建可以在单个从属设备上运行。

一种方法相对于另一种方法的主要优点/缺点是什么?我何时以及为什么应该选择其中之一而不是另一个?这对我来说一点也不明显。

我怀疑构建比从属的重量更轻,因此对于 CI/CD 基础设施来说,编排大型端到端管道并运行许多作业(2)将更具可扩展性 - 每个 Jenkins 从属在主节点上至少产生 2 个线程。

编辑

最佳答案

我的偏好是选项 1(临时奴隶),带有 Docker plugin .

使用此插件,您可以在全局 Jenkins 设置中声明构建镜像,您可以影响 Docker 镜像的标签:

enter image description here

在你的工作中,你只需要使用相关的标签,Docker插件就会将相关的slave创建到一个新的容器中。

使用 Docker 插件,Jenkins 将在几秒钟内启动一个新的从站。因此,即使您使用具有很多阶段的管道,它也能正常工作。

这就是我将在 Forgerock(我的公司)实现的内容:

  • 2 台功能强大的裸机机器(配备 SSD、32 个内核和 1 TB RAM)
  • Jenkins Docker plugin
  • 使用 Artifactory 缓存 Maven 工件(不从互联网下载)
  • docker 容器将使用本地 Maven 缓存(因此我确定不会使用旧的/奇怪的 Maven 制品)

我在一台小型裸机上进行了 POC,效果很好:)

如果您使用没有 Maven 缓存的临时从站,则可能会成为性能问题。

关于 Jenkins 插件,Nicolas De Loof 开发了一个新插件:Docker Slaves plugin .

我必须尝试这个新插件。

关于jenkins - 将 Jenkins 构建 Docker 化——从机作为容器还是构建为容器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36944881/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com