我的 Jenkins 管道中有这个阶段:
stage('Build') {
def mvnHome = tool 'M3'
sh '''for f in i7j-*; do
(cd $f && ${mvnHome}/bin/mvn clean package)
done
wait'''
}
在Jenkins"管理Jenkins"全局工具配置中,我有一个名为M3
的Maven安装,版本3.3.9
。
运行此管道时,<code>mvnHome</code>为空,因为我在日志中得到了以下信息:
+ /bin/mvn clean install -Dmaven.test.skip=true
/var/lib/jenkins/jobs/***SNIP***/script.sh: 3: /var/lib/jenkins/jobs/***SNIP***/script.sh: /bin/mvn: not found
我确实在Jenkins服务器上找到了一个路径/var/lib/jenkins/tools/hudson.tasks.Maven_MavenInstallation/M3
,它可以工作,但我不希望在此脚本中使用到mvn的硬编码路径。
我该如何解决这个问题?
编辑:答案摘要,使用工具和
Env
。
我的工作代码现在是:
stage('Build') {
def mvn_version = 'M3'
withEnv( ["PATH+MAVEN=${tool mvn_version}/bin"] ) {
sh '''for f in i7j-*; do
(cd $f && mvn clean package -Dmaven.test.skip=true -Dadditionalparam=-Xdoclint:none | tee ../jel-mvn-$f.log) &
done
wait'''
}
}
使用这个结构怎么样:
withMaven(mavenOpts: MAVEN_OPTS, maven: 'M3', mavenLocalRepo: MAVEN_LOCAL_REPOSITORY, mavenSettingsConfig: MAVEN_SETTINGS) {
sh "mvn ..."
}
最简单的方法是使用工具
指令:
pipeline {
agent any
tools {
maven 'M3'
}
stages {
stage('Build') {
steps {
sh 'mvn -B -DskipTests clean package'
}
}
}
}
< code>M3是在全球工具配置中预配置的名称,参见文档:https://jenkins.io/doc/book/pipeline/syntax/#tools
您可以将Jenkins文件中的工具与工具
和with env
snippets一起使用。
应该是这样的:
def mvn_version = 'M3'
withEnv( ["PATH+MAVEN=${tool mvn_version}/bin"] ) {
//sh "mvn clean package"
}
问题内容: 我刚刚安装了Jenkins 2.6(作为全新安装),但似乎找不到Maven安装选项。以前,我只能进入Jenkins配置,并且在Maven部分中可以选择并自动安装Maven。但是,这似乎对我不存在。 我已经安装了Maven集成插件。如何显示这些内容? 问题答案: 从Jenkins 2.x开始,您可以在Jenkins管理(Manage Jenkins)的“全局工具”条目下找到所有工具配置(
我们试图切换到jenkins管道,但我在groovy/java的低水平阻止了我们建立一个共享库。 这里是我的共享库(位于bitbucket中git repo的{root}/src/com/pipeline.groovy中)我必须承认,我在这里做什么都不知道,因为我不知道包裹的定义 Jenkins的管道看起来 通过所有这些设置,我最终得到了错误: 我怀疑我的漂亮包裹的定义,但我坚持这样做。 非常欢迎
问题内容: 我的项目有3个Maven模块,它们是由nodejs脚本构建的。 现在,我想与Jenkin和Nexus集成。我的Jenkin构建配置如下所示: 我还在“ 构建”* 部分的“ 提供配置文件 构建”步骤中添加了我的Maven ,但这没有用。Maven仍然失败,无法解析我的Nexus回购中的依赖项。 *** 在我的本地专家中,我为Nexus存储库和另一个存储库添加了一些配置。 你能把这种情况告
我正在迁移jenkins工作流作业到新的基于模板的工作流作业。因为构建号被用作工作流生成的构建工件版本的一部分,所以我必须以大于旧工作流的数量开始新工作流的构建号。不幸的是,下一个构建号插件不适用于工作流管道。 有人知道这样做的好方法吗?
我遇到了JENKINS-38706。由于它已经开放了一段时间,我正在努力解决这个问题。 我的问题是我正在运行一个多节点管道,其中一个节点是Windows从节点,具有255个字符路径限制。 因此,我正在尝试更改我的Windows从属阶段的工作区,而不是使用多分支管道使用的C:\jenkins\workspace\job-分支-随机字符,我正在尝试将其移动到c:\w\Jobs\分支。 它立即失效: 我
在Jenkins脚本管道中,您可以像这样设置PATH env变量: 注意这里解释的路径MAVENhttps://jenkins.io/doc/pipeline/steps/workflow-basic-steps/#code-withenv代码集环境变量: 要设置的环境变量列表,每个变量的形式为VARIABLE=value或VARIABLE=以取消设置其他定义的变量。您还可以使用语法PATH wh