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

Rah*_*ani 2 parallel-processing workspace jenkins jenkins-pipeline jenkins-declarative-pipeline

我有 3 个构建作业,它们在声明性 jenkins 文件中并行运行。它们运行在同一个节点,需要使用同一个工作空间。问题是 Jenkins 为每个阶段引用的工作空间,例如:

C:\UserData\Workspace                 \\Workspace for Job1
C:\UserData\Workspace@2               \\Workspace for Job2
C:\UserData\Workspace@3               \\Workspace for Job3
Run Code Online (Sandbox Code Playgroud)

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 ... }
    }
}
Run Code Online (Sandbox Code Playgroud)

Pot*_*ito 5

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

  1. 您的并行作业相互依赖,在这种情况下,它们应该根据依赖关系按顺序排列。如果需要之前作业中的某些文件,可以使用stash/unstash命令获取这些文件。
  2. 您的并行作业不相互依赖,在这种情况下,如果它们在单独的工作区中运行应该完全没问题。

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