web-dev-qa-db-ja.com

個々のスレーブノードごとにJenkinsでMavenインストールを構成する方法

症状

JenkinsでMavenジョブを作成する場合(New Item=>Mavenプロジェクト、mavenプラグインを使用して)すべてのデフォルトで実行すると、次のエラーが発生します。

Started by user anonymous
Building on master in workspace /var/lib/jenkins/jobs/job_name/workspace
ERROR: A Maven installation needs to be available for this project to be built.Either your server has no Maven installations defined, or the requested Maven version does not exist.
Finished: FAILURE

Mavenはmvnだけでコマンドラインから完全に実行されます。

許容できない回避策

Mavenインストール用のシステム全体のJenkins設定があります:Manage Jenkins=>Configure System=>Maven/Maven installations。そして、このWeb UIを使用してMavenインストールを追加すると(MAVEN_HOME/usr/share/mavenとしてプリインストールパスを提供することにより)、ジョブは正常に実行されます。

質問:なぜJenkinsのグローバル構成であり、スレーブ固有の構成ではないのですか?

グローバルJenkins設定は意味がありません。MavenはJenkinsごとではなく、スレーブごとに実行されます。

Jenkinsがジョブを実行するスレーブ動物園には、さまざまなバージョンのMavenがさまざまな場所にインストールされているさまざまなプラットフォーム、OS、環境を備えたスレーブが含まれる場合があります。

質問:スレーブノードごとにMavenインストールをどのように構成しますか?

MAVEN_HOMEM2_HOME のような環境変数をスレーブノード上のシステム全体の同じパスに設定すると、機能しませんでした。

バージョン

JenkinsマスターとスレーブはどちらもLinuxホストです。 Jenkinsバージョン:1.598

19
uvsmtid

JavaおよびスレーブにMavenがインストールされていると仮定します。

  1. Jenkinsの管理->ノードの管理に移動します
  2. 構成するノードの構成アイコンをクリックします
  3. [ノードプロパティ]まで下にスクロールし、[ツールの場所]チェックボックスをオンにします
  4. JavaおよびMavenのオプションを入力します。

これで動作するはずです(マスターにMavenインストールを構成した場合でも)。

15
Tim Webster

私にとっての解決策は、Jenkinsの管理->グローバルツール構成に移動し、そこにmavenをセットアップすることでした。/configureToolsを介してこれにアクセスできます(例: http:// your-ip:8080/jenkins/configureTools

例:Mavenインストール

  • 名前:my_maven_3.3.9
  • MAVEN_HOME:/ usr/share/maven

/ configureToolsにある他の一般的なツールの追加構成:

Gitのインストール

  • 名前:my_git_2.11.0
  • Git実行可能ファイルへのパス:/ usr/bin/git

JDKのインストール

  • 名前:my_jdk_1.8.0_161
  • Java_HOME:/opt/jdk/jdk1.8.0_161
5
Anonymous User

Mavenをマスター構成に追加せず、独自のおそらく異なる環境変数(バージョン3.2.5の例)を使用してすべてのスレーブにインストールする場合

M2_HOME=C:\Apache-maven-3.2.5
M2=C:\Apache-maven-3.2.5\bin
Path+=;C:\Apache-maven-3.2.5\bin

その後、すべてのJenkinsスレーブがローカル設定でMavenを使用します。

1
giuspen