为什么在这个声明性 jenkins 管道脚本中找不到 mvn 命令



我从 https://jenkins.io/doc/book/pipeline/syntax/#tools 那里得到了这个例子

管道脚本:

pipeline {
    agent any
    tools {
        maven 'apache-maven-3.3.9' 
    }
    stages {
        stage('Example') {
            steps {
                sh 'mvn --version'
            }
        }
    }
}

apache-maven-3.3.9 在我的全局工具配置中定义。

但是,脚本的输出是

Started by user *************
Running in Durability level: MAX_SURVIVABILITY
[Pipeline] node
Running on SRV-CI-MADE-UNIX in /home/jenkins/workspace/*************
[Pipeline] {
[Pipeline] stage
[Pipeline] { (Declarative: Tool Install)
[Pipeline] tool
[Pipeline] envVarsForTool
[Pipeline] }
[Pipeline] // stage
[Pipeline] withEnv
[Pipeline] {
[Pipeline] stage
[Pipeline] { (Example)
[Pipeline] tool
[Pipeline] envVarsForTool
[Pipeline] withEnv
[Pipeline] {
[Pipeline] sh
+ mvn --version
/home/jenkins/workspace/*************@tmp/durable-d4209a18/script.sh: line 1: mvn: command not found
[Pipeline] }
[Pipeline] // withEnv
[Pipeline] }
[Pipeline] // stage
[Pipeline] }
[Pipeline] // withEnv
[Pipeline] }
[Pipeline] // node
[Pipeline] End of Pipeline
[BFA] Scanning build for known causes...
[BFA] No failure causes found
[BFA] Done. 0s
ERROR: script returned exit code 127
Finished: FAILURE

为什么找不到 mvn 命令?

我知道显然还有其他方法可以做到这一点,但这是 Jenkins 文档本身的示例......

这是正确的示例(我也对其进行了测试),但是如果您只有master节点,它就可以工作。

我认为您刚刚在Global Tool Configuration中为master节点配置了Maven工具,但是我看到您在SRV-CI-MADE-UNIX节点上执行了作业,对于此节点,您还需要提供正确的Maven配置。

因此,要解决此问题,我想您需要执行以下步骤:

  1. 在管道配置中提供正确的代理(而不是agent any代理)(例如 masterSRV-CI-MADE-UNIX)为其配置了Maven工具;
  2. 在指定节点上安装 Maven 与您在 Global Tool Configuration 中配置的目录相同,或者在 Manage Jenkins -> Manage Nodes -> <YOUR_NODE> -> Configure -> Node Properties -> Tool Locations 中添加此节点的特定 Maven 工具位置

最新更新