簡體   English   中英

Jenkins 管道 mvn:找不到命令

[英]Jenkins pipeline mvn: command not found

我的測試作為 Maven 項目運行良好。 它從 Git 中獲取代碼。

我想在管道中執行相同的操作,所以我為管道項目編寫了以下腳本。

pipeline {
    agent any
    options {
        timestamps()
    }
    stages{ 
        stage('Just Testing') {
            steps {
                git "https://github.com/myRepo.git"
                script{
                        sh 'mvn test'
                }
                step([$class : 'Publisher', reportFilenamePattern : "**/testng-results.xml"])
            }
        }
    }   
}

但是當我執行時我得到 mvn: 命令未找到錯誤 Java 和 Maven 路徑在全局工具配置中設置正確(我確信因為我能夠執行其他 maven 項目,只有管道失敗。)

控制台 output:

Running on Jenkins in /Users/abacker/.jenkins/workspace/parallelTestNG
[Pipeline] {
[Pipeline] timestamps
[Pipeline] {
[Pipeline] stage
[Pipeline] { (Just Testing)
[Pipeline] git
00:03:52  No credentials specified
00:03:52   > git rev-parse --is-inside-work-tree # timeout=10
00:03:52  Fetching changes from the remote Git repository
00:03:52   > git config remote.origin.url https://github.com/myRepo.git # timeout=10
00:03:52  Fetching upstream changes from https://github.com/myRepo.git
00:03:52   > git --version # timeout=10
00:03:52   > git fetch --tags --force --progress -- https://github.com/myRepo.git +refs/heads/*:refs/remotes/origin/* # timeout=10
00:03:54   > git rev-parse refs/remotes/origin/master^{commit} # timeout=10
00:03:54   > git rev-parse refs/remotes/origin/origin/master^{commit} # timeout=10
00:03:54  Checking out Revision e82f48106aa72d0275591926d9cd3226ba0fefd7 (refs/remotes/origin/master)
00:03:54   > git config core.sparsecheckout # timeout=10
00:03:54   > git checkout -f e82f48106aa72d0275591926d9cd3226ba0fefd7 # timeout=10
00:03:54   > git branch -a -v --no-abbrev # timeout=10
00:03:54   > git branch -D master # timeout=10
00:03:54   > git checkout -b master e82f48106aa72d0275591926d9cd3226ba0fefd7 # timeout=10
00:03:54  Commit message: "First commit"
00:03:54   > git rev-list --no-walk e82f48106aa72d0275591926d9cd3226ba0fefd7 # timeout=10
[Pipeline] script
[Pipeline] {
[Pipeline] sh
00:03:54  + mvn test
00:03:54  /Users/abacker/.jenkins/workspace/parallelTestNG@tmp/durable-818e64a8/script.sh: line 1: mvn: command not found
[Pipeline] }
[Pipeline] // script
[Pipeline] }
[Pipeline] // stage
[Pipeline] }
[Pipeline] // timestamps
[Pipeline] }
[Pipeline] // node
[Pipeline] End of Pipeline
ERROR: script returned exit code 127
Finished: FAILURE

我該如何解決這個問題?

您沒有為 maven 項目聲明任何工具。

這將是從 Jenkins 運行 mvn 目標的良好起點。 聲明性 maven 項目

以下管道腳本為我完成了這項工作。 與在 jenkins 中創建的 maven 項目不同,您需要為腳本添加 maven 和 Z93F725A07423FE1C889FZ46 作為工具。 MAVEN_HOME - 在“管理 Jenkins”→“全局工具配置”中配置 JAVA_HOME -在“管理 Jenkins”→“全局工具配置”中配置

pipeline {
    agent any
    tools { 
      maven 'MAVEN_HOME' 
      jdk 'JAVA_HOME' 
    }
    stages {
      stage ('Build') {
        steps {
          sh 'mvn -B -ntp -Dmaven.test.failure.ignore verify'
        }
      }

    }
}

在管道腳本中,您必須提供 maven 路徑,例如

def mvnHome = tool name: 'maven-3.8.6', type: 'maven' sh "${mvnHome}/bin/mvn package" in maven 階段

我希望它會起作用,因為它對我有用..謝謝

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM