我在Jenkins中有两个Maven项目,它们下载源代码,然后使用mvn clean install
和一个在构建阶段结合了这两个步骤的管道进行构建。
Jenkins maven插件希望为maven存储库的位置找到一个环境变量。即${env.MAVEN_REPO}
。
我的目标是在管道中定义此变量,以便下游maven构建作业使用它。
这是我的管道:
pipeline {
agent any
environment {
MAVEN_REPO = "C:\\Users\\Chris\\development\\repositories\\maven"
}
stages {
stage('Build') {
steps {
echo MAVEN_REPO
echo env.MAVEN_REPO
echo "${env.MAVEN_REPO}"
build job: 'projectA'
build job: 'projectB'
}
}
}
}
上面所有三个回显都将打印已经设置的值。
现在,在下游作业中,我创建了“预处理>执行Windows批处理命令”,其中包含:
echo MAVEN_REPO is %MAVEN_REPO%
echo List of variables:
SET
问题是MAVEN_REPO
变量没有值。
最后,打印所有环境变量只需验证没有定义任何MAVEN_REPO
变量即可。
我什至尝试将变量作为作业参数提供,就像这样:
pipeline {
agent any
environment {
MAVEN_REPO = "C:\\Users\\Chris\\development\\repositories\\maven"
}
stages {
stage('Build') {
steps {
echo MAVEN_REPO
echo env.MAVEN_REPO
echo "${env.MAVEN_REPO}"
build job: 'projectA', parameters: [[$class: 'StringParameterValue', name: 'MAVEN_REPO', value: 'C:\\Users\\Chris\\development\\repositories\\maven']]
build job: 'projectB'
}
}
}
}
但在尝试使用下游作业的前置步骤并运行此bat命令echo MAVEN_REPO is %MAVEN_REPO%
来打印该变量时,该变量仍然没有值。
注意:我的Jenkins实例当前在Windows 10上运行。