问题标签 [jenkins-shared-libraries]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1086 浏览

jenkins - 如何定义管道阶段一次并多次使用它

所以我有一个使用 Jenkinsfile 的用例,我知道这并不常见,而且我还没有找到解决方案。

背景

我们目前有一个多分支管道作业配置为构建多个分支。这用于跨多个版本运行产品的系统测试。詹金斯的工作

  1. 克隆所有必需的存储库
  2. 部署环境
  3. 执行自动化测试用例
  4. 取消部署环境

为了避免必须在每个分支上定义相同的 Jenkinsfile,我们创建了一个共享库。共享库定义了 Jenkins 文件的声明式管道阶段。共享库具有以下内容:

而Jenkins文件只是简单定义了一个map,然后调用myStepcall。

例如:

问题

我们现在需要另一个 Jenkins 工作,其中一些阶段将是相同的。例如,新的工作将需要

  1. 克隆所有必需的存储库
  2. 部署环境
  3. 做点别的

并且更改公共阶段的行为(例如:克隆 repo)应该在定义此阶段的所有作业中生效。我知道我们可以when在舞台上使用该指令,但是从可用性的角度来看,我希望工作有所不同,因为他们正在执行不同的事情。一个工作的用户并不关心另一个工作运行的额外阶段。

我想避免代码重复,更好的是,我不想复制阶段代码。(包括stepswhenpost等)。

有没有一种方法可以让共享库使用所有指令(steps, when,post等)一次定义阶段“实现”,但是否会多次调用它?

例如:

0 投票
2 回答
8428 浏览

jenkins - Jenkins 共享库 src 类 - 无法解析类

我正在寻找有关设计 Jenkins 共享库类的一些指导。使用全局变量作为共享库工作正常,但每次我在 src/ 中定义一个类并且我想导入它时,我都会收到无法解析类的错误。

这是我的共享库结构:

类 Tester.groovy

这是我想在管道作业中初始化的类的代码。

var sayHello.groovy

管道作业

在第 2 行中,我得到了错误:Unable to resolve class de.schlumpf.Tester。全局变量 sayHello 就像一个魅力......有谁知道我在这里做错了什么?

共享库在系统设置中导入: 在此处输入图像描述

我知道这看起来与这个相似,但我在我的路径中找不到错字或其他东西...... 使用 Jenkins 共享库作为类

官方文档在这里:https ://jenkins.io/doc/book/pipeline/shared-libraries/

版本

  • 詹金斯:版本。2.150.1
  • 管道 2.6
  • 管道:Groovy 2.61.1
  • 管道:共享 Groovy 库 2.12
0 投票
1 回答
269 浏览

jenkins - 将 Jenkins 凭据锁定到共享库的任何策略?

我喜欢使用Jenkinsfiles共享库来获得它们声称的好处,但我对任意 Jenkinsfiles 的执行(以及可能使用广泛范围的凭据)有一些治理问题。

我认为锁定凭据以供特定共享库使用以强制执行使用模式会很方便(同时,我认为完全有可能有更好的方法来解决问题空间),所以我我只是在这个领域寻求任何想法/指导。

0 投票
1 回答
1208 浏览

jenkins - 如何将任意数量的参数传递给 Jenkins 共享库

我得到了这个 vars/libOnecomposeFileNames参数作为字符串列表的共享库。

如果我在 Jenkins 中定义了管道步骤和映射变量,libOne则会在另一个共享库中调用它:/vars/libTwo

我想在 jenkins 中调用我的 libTwo 并将两个字符串参数传递为composeFileNames

)

问题是我该如何正确地做到这一点,因为上面的代码给了我错误:

0 投票
1 回答
371 浏览

intellij-idea - IntelliJ GSDL:使用可选参数定义方法

我有 Jenkins 管道共享库,它指定了一个提供两种方法的全局变量。 foo其中一个没有参数,另一个有一个可选参数:

/vars/foo.groovy

现在我想提供一个 IntellJ GSDL 文件,它支持这两种方法的有用代码完成。(我的 Jenkins 提供的 GSDL 只包含全局变量的定义,但不包含它的方法,所以我试图添加它。)

pipeline.gsdl(詹金斯)

pipeline.gsdl(被我拉皮条)

到目前为止,一切都很好。
但是,正如它所暗示的那样,我的 Jenkinsfile 中的代码完成并不完全令人满意

IntelliJ 代码完成建议

因为getBarOne()它暗示了.barOne.getBarOne(); 建议使用 for getBarTwo(..)only .getBarTwo(String value),尽管该参数是可选的。

如何在 GDSL 文件中指定参数是可选的,以便我得到建议的所有三个(有效的常规)选项barTwogetBarTwo()getBarTwo(String value)? (不幸的是,“GDSL AWESOMENESS”系列没有帮助。)

0 投票
1 回答
301 浏览

jenkins - 使用 Java 的 Jenkins PipelineShared 库

我知道使用 Groovy,可以开发 Jenkins Pipeline 共享库。

我想知道是否可以使用 Java 或任何其他技术开发相同的 Jenkins 管道共享库?

0 投票
2 回答
963 浏览

jenkins - 如何在从管道共享库继承的声明性 jenkins 管道中定义其他参数?

我正在寻找这样的事情是否可行: 如何在 jenkinsfile 中定义从管道共享库继承的附加参数?

但是在声明性管道中,我尝试了类似于上述帖子的解决方案,但没有运气。

我需要能够声明一个构建参数的共享库,然后我可以在多个声明的管道中使用它。

像这样的东西:

我想知道是否有人可以提供任何意见?非常感谢。

0 投票
1 回答
1147 浏览

jenkins-pipeline - 有没有办法将 Jenkinsfile 中的整个 post {} 构建部分移动到全局管道库?

我对 Jenkins 管道相对较新,但是已经实现了一些,我意识到在我发疯之前我需要开始使用 jenkins 共享库。

已经想出了如何在库中定义一些重复的步骤,并从 Jenkinsfile 中以更少的混乱来调用它们,但不确定是否可以为整个后期构建部分做同样的事情(以为我已经阅读了如何定义lib和类似的整个管道),因为这几乎是每个管道代码的静态结束:

我只是不知道如何在语法上实现这一点。当然,我可以将整个后期构建部分定义为一个 lib/var,例如:doPotBuild.groovy

post {}但是我最终将如何从定义的构建块部分(AKA 阶段)之外的 Jenkinsfile 中调用它。

我可以在 some 中调用它stage('post build){doPostBuild()},但它不会满足真实post {}部分的工作方式,例如,如果前一个阶段出现故障,它不会被执行。

对此有何想法,主要是工作示例?

0 投票
1 回答
212 浏览

mockito - groovy.lang.MissingMethodException 与 PowerMock 和 Jenkins getItemByFullName

如何使用 PowerMockito 确保 Jenkins 静态方法返回我的模拟对象?

我看到如果我有一个测试,詹金斯就是模拟。但是,如果我为其他静态方法添加看起来像有效的 PowerMockito.when 的内容,则会收到以下错误。我难住了。

错误

代码

0 投票
0 回答
82 浏览

jenkins - 我可以从共享库中使用 jenkins post 步骤吗?

在共享库方法中,我试图在之后执行一个阶段和一个发布步骤:

它给出了一个错误No such DSL method 'post' found among steps。post 步骤可以在“正常”管道脚本中很好地使用,如下所示: https ://jenkins.io/doc/book/pipeline/syntax/#post

有没有办法在共享库中使用它?

干杯!