声明性詹金斯管道中的引用变量
Referencing variable in declarative jenkins pipeline
我正在使用下面的 groovy 来调用 bat 命令,无论我如何在 bat 命令中引用 LOCAL_WORKSPACE 它都不会对其进行评估。
我错过了什么?
错误
nuget restore $env.LOCAL_WORKSPACE
"Input file does not exist: $env.LOCAL_WORKSPACE"
脚本
pipeline {
agent any
stages {
stage('Clone repo') {
steps {
deleteDir()
git branch: 'myBranch', changelog: false, credentialsId: 'myCreds', poll: false, url: 'http://myRepoURL'
}
}
stage ("Set any variables") {
steps{
script{
LOCAL_BUILD_PATH = "$env.WORKSPACE"
}
}
}
stage('Build It, yes we can') {
parallel {
stage("Build one") {
steps {
echo LOCAL_BUILD_PATH
bat 'nuget restore %LOCAL_WORKSPACE%'
}
}
}
}
}
}
您不能设置变量以在阶段之间共享数据。基本上每个 script
都有自己的命名空间。
您可以使用 pipeline syntax docs 中描述的环境指令。这些 constants 是全局可用的,但它们是 constants,因此您无法在任何阶段更改它们。
不过您可以计算这些值。例如,我使用 sh
步骤来获取 master 上的当前提交数,如下所示:
pipeline {
agent any
environment {
COMMITS_ON_MASTER = sh(script: "git rev-list HEAD --count", returnStdout: true).trim()
}
stages {
stage("Print commits") {
steps {
echo "There are ${env.COMMITS_ON_MASTER} commits on master"
}
}
}
}
您可以使用环境变量来存储和访问 to/from 阶段。例如,如果将 LOCAL_ENVR 定义为 Jenkins 参数,则可以从阶段操作变量:
stage('Stage1') {
steps {
script{
env.LOCAL_ENVR = '2'
}
}
}
stage('Stage2') {
steps {
echo "${env.LOCAL_ENVR}"
}
}
我正在使用下面的 groovy 来调用 bat 命令,无论我如何在 bat 命令中引用 LOCAL_WORKSPACE 它都不会对其进行评估。 我错过了什么?
错误
nuget restore $env.LOCAL_WORKSPACE "Input file does not exist: $env.LOCAL_WORKSPACE"
脚本
pipeline {
agent any
stages {
stage('Clone repo') {
steps {
deleteDir()
git branch: 'myBranch', changelog: false, credentialsId: 'myCreds', poll: false, url: 'http://myRepoURL'
}
}
stage ("Set any variables") {
steps{
script{
LOCAL_BUILD_PATH = "$env.WORKSPACE"
}
}
}
stage('Build It, yes we can') {
parallel {
stage("Build one") {
steps {
echo LOCAL_BUILD_PATH
bat 'nuget restore %LOCAL_WORKSPACE%'
}
}
}
}
}
}
您不能设置变量以在阶段之间共享数据。基本上每个 script
都有自己的命名空间。
您可以使用 pipeline syntax docs 中描述的环境指令。这些 constants 是全局可用的,但它们是 constants,因此您无法在任何阶段更改它们。
不过您可以计算这些值。例如,我使用 sh
步骤来获取 master 上的当前提交数,如下所示:
pipeline {
agent any
environment {
COMMITS_ON_MASTER = sh(script: "git rev-list HEAD --count", returnStdout: true).trim()
}
stages {
stage("Print commits") {
steps {
echo "There are ${env.COMMITS_ON_MASTER} commits on master"
}
}
}
}
您可以使用环境变量来存储和访问 to/from 阶段。例如,如果将 LOCAL_ENVR 定义为 Jenkins 参数,则可以从阶段操作变量:
stage('Stage1') {
steps {
script{
env.LOCAL_ENVR = '2'
}
}
}
stage('Stage2') {
steps {
echo "${env.LOCAL_ENVR}"
}
}