jenkins管道,从子作业中隐藏

时间:2019-04-19 18:22:11

标签: jenkins jenkins-pipeline

我有一个单独的build管道,该管道使用jenkinsfile来构建代码。 我从deploy管道触发它,并希望获得构建结果。

之所以这样做,是因为开发人员可以定义构建步骤,但部署不受控制。

这是jenkins job builder中的示例代码:

- job:
    name: Build and Deploy
    project-type: pipeline
    dsl: |
      node {
        stage('Build') {
          # that job does stash inside a jenkinsfile
          build job: "Build"
          sh 'cp -rv "../Build/dist/" ./' # this is a workaround
          stash includes: 'dist/*.zip', name: 'archive'
        }
        stage('Deploy') {
          unstash 'archive'
          sh "..."
        }
      }

那我怎么unstash在子工作中对stash进行编码?

P.S .:还有一种人工制品的解决方法:

在子工作中:

archiveArtifacts artifacts: '*.zip', fingerprint: true

主DSL:

    dsl: |
      node {
        def build_job_number = 0
        def JENKINS = "http://127.0.0.1:8080"
        stage('Build') {
          def build_job = build job: "Build"
          build_job_number = build_job.getNumber()
        }
        stage('Deploy') {
          sh "wget -c --http-user=${USER} --http-password=${TOKEN} --auth-no-challenge ${JENKINS}/job/Build/${build_job_number}/artifact/name.zip"
          sh "..."
        }
      }

这里的问题是需要API令牌。

1 个答案:

答案 0 :(得分:0)

如果您选择archiveArtifacts,则可以使用copyArtifacts对其进行补充。

据我所知stash / unstash仅在同一作业中工作,因此您的另一种选择是在管道的配置中打勾Preserve stashes from completed builds,以便您可以重复使用他们。