如何在 Jenkins 中为每个从属节点配置 Maven 安装?
How to configure Maven installation in Jenkins per individual Slave node?
症状
如果我使用所有默认值和运行 它,我得到这个错误:
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 配置:管理 Jenkins => 配置系统 => Maven / Maven 安装。如果我使用此 Web UI 添加 Maven 安装(通过在 MAVEN_HOME
中提供预安装路径作为 /usr/share/maven
),作业 运行s 成功。
问题:为什么它是全局 Jenkins 配置而不是特定于 Slave 的配置?
全局 Jenkins 配置没有意义:Maven 运行 每个从属,而不是每个 Jenkins。
Jenkins 运行作业中的 Slaves zoo 可能包含具有各种平台、操作系统和环境的 Slaves,其中不同版本的 Maven 安装在不同的位置。
问题:如何为每个从属节点配置 Maven 安装?
将 MAVEN_HOME
and M2_HOME
等环境变量设置为从属节点上整个系统的相同路径无效。
版本
Jenkins Master 和 Slave 都是 Linux 主机。詹金斯版本:1.598
如果您不将 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 slave 将只使用具有本地设置的 Maven。
假设您已经 Java 并且在您的从站上安装了 Maven:
- 转到管理 Jenkins -> 管理节点
- 单击要配置的节点上的配置图标
- 向下滚动到 'Node Properties' 并勾选 'Tool Locations' 复选框
- 填写 Java 和 Maven 的选项。
它现在应该可以工作了(即使您已经在 master 上配置了 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
为简单起见,使用我的 public docker 图片
docker push chiraggupta95/jenkinswithmvn:v1
如果您想自定义自己的图像,请查看我的 git 存储库以获取完整说明。
https://github.com/chiraggupta95apr/jenkins
快乐编码:)
症状
如果我使用所有默认值和运行 它,我得到这个错误:
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 配置:管理 Jenkins => 配置系统 => Maven / Maven 安装。如果我使用此 Web UI 添加 Maven 安装(通过在 MAVEN_HOME
中提供预安装路径作为 /usr/share/maven
),作业 运行s 成功。
问题:为什么它是全局 Jenkins 配置而不是特定于 Slave 的配置?
全局 Jenkins 配置没有意义:Maven 运行 每个从属,而不是每个 Jenkins。
Jenkins 运行作业中的 Slaves zoo 可能包含具有各种平台、操作系统和环境的 Slaves,其中不同版本的 Maven 安装在不同的位置。
问题:如何为每个从属节点配置 Maven 安装?
将 MAVEN_HOME
and M2_HOME
等环境变量设置为从属节点上整个系统的相同路径无效。
版本
Jenkins Master 和 Slave 都是 Linux 主机。詹金斯版本:1.598
如果您不将 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 slave 将只使用具有本地设置的 Maven。
假设您已经 Java 并且在您的从站上安装了 Maven:
- 转到管理 Jenkins -> 管理节点
- 单击要配置的节点上的配置图标
- 向下滚动到 'Node Properties' 并勾选 'Tool Locations' 复选框
- 填写 Java 和 Maven 的选项。
它现在应该可以工作了(即使您已经在 master 上配置了 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
为简单起见,使用我的 public docker 图片
docker push chiraggupta95/jenkinswithmvn:v1
如果您想自定义自己的图像,请查看我的 git 存储库以获取完整说明。
https://github.com/chiraggupta95apr/jenkins
快乐编码:)