如何在每个Slave节点的Jenkins中配置Maven安装?

症状

如果我在Jenkins( 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安装 。 如果我使用此Web UI添加Maven安装(通过在MAVEN_HOME提供预先安装的路径为/usr/share/maven ),作业将运行成功。

问题:为什么它是全局Jenkins配置而不是特定于Slave的配置?

全局Jenkins配置没有意义:Maven是按Slave运行的,而不是每个Jenkins运行。

Jenkins运行作业的Slaves动物园可能包含各种平台的奴隶,操作系统,不同版本的Maven安装在不同位置的环境。

问题:如何为每个Slave节点配置Maven安装?

MAVEN_HOMEM2_HOME等环境变量设置为Slave节点上整个系统的相同路径不起作用。

版本

Jenkins Master和Slave都是Linux主机。 jenkins版本: 1.598

假设你的奴隶上安装了Java和Maven:

  1. 转到管理Jenkins – >管理节点
  2. 单击要配置的节点上的配置图标
  3. 向下滚动到“节点属性”并勾选“工具位置”复选框
  4. 填写Java和Maven的选项。

它现在应该可以工作(即使您已在主服务器上配置了Maven安装)。

如果你没有将Maven添加到主配置中,你只需将它安装在每个具有自己可能不同的环境变量的slave上(例如版本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和本地设置。

对我来说,解决方案是去管理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