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,它是空的。看起来问题只是在存在并行阶段时发生。
我该如何解决?
好吧,下面是我最初的答案,但仍然失败。我的安装使用了较旧的 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 个解决方案,但都失败了:
我更古怪的解决方案是cd在执行每个 shell 命令之前将每个命令更改为使用绝对路径或目录。
如果你有一个较旧的码头工人,旧的答案应该有效:
这是我非常hacky的解决方案。我无法阻止 Jenkins 为每个阶段创建不同的管道,所以我的解决方案是:
myWorkspacedir (myWorkspace) {...}