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



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

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

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

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

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

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

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

最新更新