【问题标题】:Jenkins Workspace not visible on docker slavesJenkins 工作区在 docker slave 上不可见
【发布时间】:2018-07-31 05:18:34
【问题描述】:

我在 jenkins 中有一个主从设置,我所有的从机器都是 docker 从机器。

我正在使用另一个 docker 插件来配置这些从站。我所有的工作都在从节点上成功传递,但我无法从 jenkins UI 查看工作区。这是因为在构建成功执行后容器被破坏了吗?如果是,那么查看工作区的解决方法是什么。

【问题讨论】:

  • 如果您想保留工作区,您需要提供docker run -it -v host-dir:container-dir $image-name 否则它不会保留工作区。此功能在 docker 中称为 Volume mount。谢谢
  • 这会帮助我在 UI 中查看工作区吗?
  • 是的,但条件是它不应该停止您的容器。如果你想停止容器,我建议使用共享存储来保存任何容器的持久数据,并且应该永久挂载在 jenkins UI 上。
  • 好的,我想停止容器,因为有很多构建,我想在构建完成后清理它。您能否详细说明如何使用共享存储来持久化数据?

标签: docker jenkins jenkins-plugins


【解决方案1】:

因此,您希望保留在构建触发时启动并在构建完成时停止的所有容器的存储。对吗?

假设您将一个大分区挂载为共享存储。 /opt 或您选择的任何内容。

因此,当您触发构建时,它应该使用docker run -it --name ${JOB_NUMBER} -v /opt/$JOB_NUBER:$PATH_OF_BUILD $image-name 启动容器,所以现在这个/opt/ 分区应该是共享存储,如nfssshfs,并且还应该与jenkins-master nodes 绑定,所以当您导航到任何你应该能够看到/opt/ 分区数据的作业工作区。

谢谢!

【讨论】:

  • 听起来像一个计划...我会尽力回复你。不过这里有个快速的问题:当您说共享存储时,这意味着应该可以从 docker 容器内部访问它?
  • 我假设你在构建触发时在多台机器上运行容器,对吗?所以你想要所有这些 docker 安装的虚拟机/物理服务器之间的公共存储。所以它应该可以从 docker 外部和内部访问,因为当我们使用 docker run 命令执行 -v 时,它最终会在物理机 /opt/ 上写入数据。
  • 我的用例是,我有一个 jenkins 从站,为此我使用了另一个 docker/docker 插件。我有 10 个作业绑定到这个 jenkins docker slave,每个作业都会启动一个新容器并在构建后销毁。我想确保在任何给定时间点,我都可以从 jenkins UI 中看到每个作业工作区。
  • 知道了。因此,上述架构将帮助您甚至添加更多 docker 安装的节点。为您的工作提供服务
  • 如果逻辑正确,步骤如下: 在主机上创建一个卷。与詹金斯大师分享该卷。使用该卷运行映像?
猜你喜欢
  • 1970-01-01
  • 2016-11-25
  • 2018-07-18
  • 2019-01-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-13
  • 2019-01-28
相关资源
最近更新 更多