jenkins 如何重用来自不同并行阶段的工作区中的文件?

drnojrws  于 2023-02-03  发布在  Jenkins
关注(0)|答案(1)|浏览(162)

我有一个Jenkins流水线,它并行运行几个阶段,其中一些阶段会产生中间构建文件,我希望在后面的步骤中重用这些文件:

pipeline {
  stages {
    stage("Parallel build") {
      parallel {
        stage("A") { /* produces file A */ }
        stage("B") { /* produces file B */ }
        stage("C") { /* produces nothing relevant */ }
      }
    }
    stage("Combine") {
      /* runs a task that needs files A and B */
    }
  }
}

据我所知,Jenkins会随机给予我一个并行阶段的工作空间,所以我的合并步骤将有文件A、B或两者都没有,但不会两者都有。
如何解决此问题?

cdmah0mi

cdmah0mi1#

有几种方法可以做到这一点。
1.您可以将文件复制到所需的目录(您知道路径,可以创建一个具有构建ID的子目录,使其唯一),并从那里访问它们。
1.您可以在初始阶段隐藏文件,然后将其释放并在后期阶段使用它们。

stash includes: 'something/A.txt', name: 'filea'

unstash 'filea'

1.将工作区位置保存到全局变量并在后台文件中使用它。

pipeline {
  agent any 
  
  stages {
    stage('Run Tests') {
      parallel {
        stage('Stage A') {
          steps {
            script {
              sh ''' 
                  echo "STAGE AAAA" 
                  pwd echo 
                  "ATAGEA" > a.txt
                ''' 
                stageAWS = "$WORKSPACE"
            }
          }
        }
        stage('Stage B') {
          steps {
            script { 
                sh ''' 
                    echo "STAGE B" 
                    pwd
                ''' 
                stageBWS = "$WORKSPACE" }
          }
        }
      }
    }
    stage('Stage C') {
      steps {
        script { echo "$stageAWS" echo "$stageBWS" }
      }
    }
  }
}

相关问题