如何在Jenkins声明性管道的代理部分中使用环境变量?

pab*_*car 12 npm jenkins jenkins-pipeline

我正在为一个基于node.js的应用程序构建一个Docker镜像,其中一些依赖项需要一个私有NPM注册表的NPM令牌,但是在构建映像时,包含该令牌的变量为null,例如

docker build -t 3273e0bfe8dd329a96070382c1c554454ca91f96 --build-args NPM_TOKEN=null -f Dockerfile
Run Code Online (Sandbox Code Playgroud)

简化的管道是:

pipeline {

  environment {
    NPM_TOKEN = credentials('npm-token')
  }

  agent {
    dockerfile {
      additionalBuildArgs "--build-args NPM_TOKEN=${env.NPM_TOKEN}"
    }
  }

  stages {
    stage('Lint') { 
      steps { 
        sh 'npm run lint' 
      }
    }
  }

}
Run Code Online (Sandbox Code Playgroud)

有没有办法在该部分使用env变量或目前不支持?

顺便说一句,我已经按照Docker中的建议和私有模块有关如何使用NPM令牌构建一个docker镜像

Spe*_*one 8

这肯定是声明性管道的一个错误.您可以在此处跟踪与此相关的问题:https://issues.jenkins-ci.org/browse/JENKINS-42369

如果你不再使用声明性管道并使用脚本管道,那么这不会发生,尽管你的Jenkins文件将是"更多的"

  • 如果您展示解决此问题的脚本化管道示例,那就太好了。 (3认同)