我刚刚创建了一个 Jenkins Pipeline DSL 作业,其中我从 SCM 克隆了 Java 代码并尝试运行 mvn clean
。但管道不断抛出错误:
mvn clean install -Dmaven.test.skip=true -Dfindbugs.skip=true
/var/lib/jenkins/workspace/<project>@tmp/durable-77d8d13c/script.sh: 2:
/var/lib/jenkins/workspace/<project>@tmp/durable-77d8d13c/script.sh: mvn: not found
看起来它试图找到pom.xml
里面<project>@tmp
目录是空的。实际代码已成功克隆到 <project>
内目录。下面是我的Jenkinsfile
:
node {
stage ("Clean Workspace") {
echo "${WORKSPACE}"
cleanWs()
}
stage ("Get Code") {
git branch: "${params.branch}", url: 'git@bitbucket.org:xx/xxxxxxx.git'
}
stage ("mvn clean") {
sh "mvn clean install -Dmaven.test.skip=true -Dfindbugs.skip=true"
}
}
我也尝试过 ${WORKSPACE}
env 变量但仍然不起作用。
最佳答案
问题已解决,我通过包含 Maven 工具步骤修改了 Pipeline DSL 作业:
stage ("mvn clean") {
withEnv( ["PATH+MAVEN=${tool name: 'mvn', type: 'maven'}/bin"] ) {
sh "mvn clean install -Dmaven.test.skip=true -Dfindbugs.skip=true"
}
}
关于java - 由于 @tmp dir 导致 Jenkins 管道 DSL Maven 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49385149/