我正在使用下面的常规调用bat命令,无论我如何在bat命令中引用LOCAL_WORKSPACE都不会对其进行评估。 我想念什么?
错误
nuget restore $ env.LOCAL_WORKSPACE “输入文件不存在:$ 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%'
}
}
}
}
}
}
答案 0 :(得分:2)
您不能设置变量以在阶段之间共享数据。基本上每个script
都有自己的名称空间。
您可以做的是使用pipeline syntax docs中所述的环境指令。这些常量是全局可用的,但是它们是 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"
}
}
}
}
答案 1 :(得分:0)
您可以使用环境变量来存储和访问阶段。例如,如果将LOCAL_ENVR定义为Jenkins参数,则可以分阶段操作变量:
stage('Stage1') {
steps {
script{
env.LOCAL_ENVR = '2'
}
}
}
stage('Stage2') {
steps {
echo "${env.LOCAL_ENVR}"
}
}