如何在每个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_HOME
和M2_HOME
等环境变量设置为Slave节点上整个系统的相同路径不起作用。
版本
Jenkins Master和Slave都是Linux主机。 jenkins版本: 1.598
假设你的奴隶上安装了Java和Maven:
- 转到管理Jenkins – >管理节点
- 单击要配置的节点上的配置图标
- 向下滚动到“节点属性”并勾选“工具位置”复选框
- 填写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