在具有相同工作空间的同一节点中并行运行多个阶段

时间:2019-10-21 06:59:20

标签: jenkins parallel-processing jenkins-pipeline workspace jenkins-declarative-pipeline

我有3个构建作业,它们在声明性jenkinsfile中并行运行。它们在相同的节点上运行,并且需要使用相同的工作空间。问题是詹金斯在每个阶段都引用的工作空间,例如:

C:\UserData\Workspace                 \\Workspace for Job1
C:\UserData\Workspace@2               \\Workspace for Job2
C:\UserData\Workspace@3               \\Workspace for Job3

Jenkins在其余2个阶段中附加了“ @ 2”和“ @ 3”,因此存在路径问题,作业失败。有人可以帮我解决这个问题吗?

My code is:

pipeline {
    stages {
    stage('Build') {
                parallel {
                    stage('Job1') {
                        agent {
                              node {
                                    label 'label1'
                                    customWorkspace = "C:\UserData\Workspace"
                }
            }     
                   stage('Job2') { ... similar code ... }
                   stage('Job3') { ... similar code ... }
    }
}

1 个答案:

答案 0 :(得分:0)

必须使用不同的工作空间,因为否则这些作业将同时在同一工作空间内运行并遇到资源冲突。如果两个或多个作业读取或写入同一文件怎么办?这是危险的,结果是不可预测的。另请注意,不能保证哪个并行作业将首先完成。可能是您的管道在一个工作程序节点上工作正常,但在另一个使用不同配置的工作节点上失败(例如,最大并发作业数)。我在这里看到两种情况:

  1. 您的并行作业是相互依赖的,在这种情况下,它们应根据具体情况而顺序排列。如果以前的工作需要一些文件,则可以使用stash / unstash命令来获取这些文件。
  2. 您的并行作业互不依赖,在这种情况下,如果它们在单独的工作空间中运行,那应该很好。

如果您解释了为什么作业“ 需要使用相同的工作空间”,我们也许可以找到更好的解决方案。

相关问题