如何在 Jenkins 中为每个单个从节点配置 Maven 安装?

2022-09-01 21:00:31

症状

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

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

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

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

问:如何为每个从属节点配置 Maven 安装?

在从属节点上将环境变量(如MAVEN_HOME和M2_HOME)设置为整个系统的相同路径不起作用。

版本

Jenkins Master 和 Slave 都是 Linux 主机。詹金斯版本:1.598


答案 1

假设你在你的从站上安装了Java和Maven:

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

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


答案 2

对我来说,解决方案是转到 Manage Jenkins -> Global Tool Configuration,并在那里设置 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

推荐