Artifactory rtBuildInfo 不在 Jenkins docker 管道中收集环境变量

Artifactory rtBuildInfo does not collect env variables in Jenkins docker pipeline

我想使用 Artifactory 插件在 Jenkins 声明式 dockerized 管道中收集环境变量。

pipeline {
  agent {
    docker {
      image 'node:10.16'
    }
  }
  stages {
    stage ('Build') {
      // This publish build info but without env variables:
      rtBuildInfo captureEnv: true
      rtPublishBuildInfo serverId: "Artifactory1"
      // This publish build info WITH env variables:
      script {
        server = Artifactory.server "Artifactory1"

        buildInfo = Artifactory.newBuildInfo()
        buildInfo.env.capture = true
        buildInfo.env.collect()
        server.publishBuildInfo buildInfo
      }
    }
  }
}

因此,使用脚本语法就可以,而使用声明式则不行。我正在关注这个 JFrog 文档:https://www.jfrog.com/confluence/display/RTF/Declarative+Pipeline+Syntax#DeclarativePipelineSyntax-PublishingBuild-InfotoArtifactory

rtBuildInfo captureEnv: truebuildInfo.env.capture = true

set the Build-Info object to automatically capture environment variables while downloading and uploading files

这意味着环境变量只会在上传和下载期间收集。

buildInfo.env.collect(),然而

collect environment variables at any point in the script

这就是在您的案例中收集环境变量的原因。声明式不支持类似选项。