如何防止管道中的 Jenkins 并行阶段创建新工作区?

nev*_*ves 5 jenkins jenkins-pipeline

我有一个以这种方式执行的管道:

Stage 1  -----> Stage 2  ----> Stage4
clone repo  |   exec           email   
            |                  results
            --> Stage 3
                exec
Run Code Online (Sandbox Code Playgroud)

阶段 1、2 和 3 都在 docker 映像中执行,它们都共享工作区的网络目录。

我的问题是当第 3 阶段开始时,它失败了,因为克隆的文件不在那里。第 3 阶段创建了一个名为的新工作区MyJobName@2,它是空的。看起来问题只是在存在并行阶段时发生。

我该如何解决?

nev*_*ves 0

好吧,下面是我最初的答案,但仍然失败。我的安装使用了较旧的 docker 版本,并且总是收到错误:

Docker version is older than 17.12, working directory will be /var/jenkins_home/workspace/ICP-bdm-Revisao not /var/jenkins_home/workspace/ICP-bdm-Revisao@2
Run Code Online (Sandbox Code Playgroud)

我以为问题已经解决了,但是当我开始使用更多并行阶段时,问题又回来了。

我尝试了这 3 个解决方案,但都失败了

  • 目录(我的工作空间){...}
  • ws (我的工作区) {...}
  • 节点 {customWorkspace myWorkspace}

我更古怪的解决方案是cd在执行每个 shell 命令之前将每个命令更改为使用绝对路径或目录。


如果你有一个较旧的码头工人,旧的答案应该有效:

这是我非常hacky的解决方案。我无法阻止 Jenkins 为每个阶段创建不同的管道,所以我的解决方案是:

  1. 在第一阶段,将当前工作空间放入名为的全局变量中myWorkspace
  2. 对于每个其他阶段,将步骤中的命令括在命令内dir (myWorkspace) {...}