【问题标题】:Running multiple stages in parallel in the same node with the same workspace在具有相同工作空间的同一节点中并行运行多个阶段
【发布时间】:2020-02-17 05:52:17
【问题描述】:

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

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 ... }
    }
}

【问题讨论】:

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


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-27
      • 2021-08-05
      • 1970-01-01
      • 1970-01-01
      • 2017-12-05
      • 2023-02-02
      相关资源
      最近更新 更多