我在Jenkins管道中有这个阶段:
stage('Build') {
def mvnHome = tool 'M3'
sh '''for f in i7j-*; do
(cd $f && ${mvnHome}/bin/mvn clean package)
done
wait'''
}
在Jenkins»管理Jenkins»全局工具配置我有一个名为 M3
的Maven安装,版本 3.3.9
.
运行此管道时, mvnHome
为空,因为我在日志中得到了这个:
+ /bin/mvn clean install -Dmaven.test.skip=true
/var/lib/jenkins/jobs/***SNIP***/script.sh: 3: /var/lib/jenkins/jobs/***SNIP***/script.sh: /bin/mvn: not found
我确实在Jenkins服务器上找到了一个路径 /var/lib/jenkins/tools/hudson.tasks.Maven_MavenInstallation/M3
,但是我不想在这个脚本中使用mvn的硬编码路径 .
我该如何解决?
EDIT :answer的摘要,使用 tool
和 withEnv
.
我的工作代码现在是:
stage('Build') {
def mvn_version = 'M3'
withEnv( ["PATH+MAVEN=${tool mvn_version}/bin"] ) {
sh '''for f in i7j-*; do
(cd $f && mvn clean package -Dmaven.test.skip=true -Dadditionalparam=-Xdoclint:none | tee ../jel-mvn-$f.log) &
done
wait'''
}
}
3 回答
您可以将Jenkins文件中的工具与
tool
和withEnv
片段一起使用 .应该是这样的:
最简单的方法应该是使用
tools
指令:M3
是全局工具配置中预先配置的名称,请参阅文档:https://jenkins.io/doc/book/pipeline/syntax/#tools使用这个结构怎么样: