【问题标题】:When do the jenkins workspaces get preserved?詹金斯工作区什么时候得到保留?
【发布时间】:2019-08-13 03:09:42
【问题描述】:

我有一堆管道作业,但在执行时,一些工作区被保留,一些被删除。 jenkins 是如何做出这些决定的?

根据我目前的发现:

  1. 在节点上执行的所有作业都将保留其工作空间,例如/home/ec2-user/workspaces/some-job

  2. master 上的一些作品保留其工作区,但其他一些工作区在作业完成后消失。例如,在我的构建作业成功后,如果我在ssh 中可以看到它的工作区目录;但我所有的 e2e 工作都没有工作空间。

请注意,我的管道中没有使用任何clearWsdeleteDir 等。

顺便说一句,我正在研究工作区的原因是磁盘使用量不断增加,我想清理。我以为每次运行作业时都会覆盖工作区,但我多次收到“磁盘空间太低”警告。

【问题讨论】:

  • 如果我没记错的话,每个分支都在工作区文件夹中,所以 5 个分支意味着存储中的项目是 5 倍。 Jenkins 不会自行删除此工作区。
  • @JustAProgrammer 感谢指出,但我的项目现在只有一个master分支。
  • 您还可以检查作业的配置。如果在“构建后操作”中您保留了“构建完成后删除工作区”步骤。
  • @mkemmerz “Jenkins 不会自行删除此工作区”。那么,您的意思是詹金斯附带的功能最终会淹没您的磁盘空间吗?除非你手动整理它们,或者使用插件
  • @DavidLavender 是的,这是正确的。您的工作空间将简单地增长,直到它被填满。例如,Jenkins 提供了CleanWs()(工作区清理插件),可以帮助您防止此问题。

标签: jenkins jenkins-pipeline


【解决方案1】:

Jenkins 默认为每个构建作业(= 运行)创建一个新工作区。您可以在控制台日志中的 ws 路径中看到:/here/is/the/ws@buildnumber。如果你不想有这种行为,你可以将它设置为一个路径,例如每个 repo 都相同:How to set specific workspace folder for jenkins multibranch pipeline projects

【讨论】:

    【解决方案2】:

    也许您的某些工作不会在 Jenkins Master 上执行,而是在某个连接的节点上执行(通过 Jenkinsfile 或流水线描述中的 agent 指令)。如果是这种情况,您将不会在 Jenkins 主服务器上看到此作业的工作空间内的构建目录,而是在连接的节点上。 您只能在 Master 上的 /<JENKINS_HOME>/jobs/My_Job/ 下获得构建结果(如工件、报告等)。

    请记住,您也可以间接触发节点上的 Jenkins 构建,例如,如果您在 Dockerfile 中运行构建并已配置(在 Jenkins 配置中)特定节点标签以执行 Docker 构建。

    【讨论】:

      猜你喜欢
      • 2015-07-25
      • 2022-09-27
      • 2018-11-19
      • 2016-09-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多