问题标签 [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.
jenkins - 如何定义管道阶段一次并多次使用它
所以我有一个使用 Jenkinsfile 的用例,我知道这并不常见,而且我还没有找到解决方案。
背景
我们目前有一个多分支管道作业配置为构建多个分支。这用于跨多个版本运行产品的系统测试。詹金斯的工作
- 克隆所有必需的存储库
- 部署环境
- 执行自动化测试用例
- 取消部署环境
为了避免必须在每个分支上定义相同的 Jenkinsfile,我们创建了一个共享库。共享库定义了 Jenkins 文件的声明式管道阶段。共享库具有以下内容:
而Jenkins文件只是简单定义了一个map,然后调用myStep
call。
例如:
问题
我们现在需要另一个 Jenkins 工作,其中一些阶段将是相同的。例如,新的工作将需要
- 克隆所有必需的存储库
- 部署环境
- 做点别的
并且更改公共阶段的行为(例如:克隆 repo)应该在定义此阶段的所有作业中生效。我知道我们可以when
在舞台上使用该指令,但是从可用性的角度来看,我希望工作有所不同,因为他们正在执行不同的事情。一个工作的用户并不关心另一个工作运行的额外阶段。
我想避免代码重复,更好的是,我不想复制阶段代码。(包括steps
、when
、post
等)。
有没有一种方法可以让共享库使用所有指令(steps
, when
,post
等)一次定义阶段“实现”,但是否会多次调用它?
例如:
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
jenkins - 将 Jenkins 凭据锁定到共享库的任何策略?
我喜欢使用Jenkinsfiles和共享库来获得它们声称的好处,但我对任意 Jenkinsfiles 的执行(以及可能使用广泛范围的凭据)有一些治理问题。
我认为锁定凭据以供特定共享库使用以强制执行使用模式会很方便(同时,我认为完全有可能有更好的方法来解决问题空间),所以我我只是在这个领域寻求任何想法/指导。
jenkins - 如何将任意数量的参数传递给 Jenkins 共享库
我得到了这个 vars/libOne
将composeFileNames
参数作为字符串列表的共享库。
如果我在 Jenkins 中定义了管道步骤和映射变量,libOne
则会在另一个共享库中调用它:/vars/libTwo
我想在 jenkins 中调用我的 libTwo 并将两个字符串参数传递为composeFileNames
:
)
问题是我该如何正确地做到这一点,因为上面的代码给了我错误:
intellij-idea - IntelliJ GSDL:使用可选参数定义方法
我有 Jenkins 管道共享库,它指定了一个提供两种方法的全局变量。 foo
其中一个没有参数,另一个有一个可选参数:
/vars/foo.groovy
现在我想提供一个 IntellJ GSDL 文件,它支持这两种方法的有用代码完成。(我的 Jenkins 提供的 GSDL 只包含全局变量的定义,但不包含它的方法,所以我试图添加它。)
pipeline.gsdl(詹金斯)
pipeline.gsdl(被我拉皮条)
到目前为止,一切都很好。
但是,正如它所暗示的那样,我的 Jenkinsfile 中的代码完成并不完全令人满意
因为getBarOne()
它暗示了.barOne
和.getBarOne()
; 建议使用 for getBarTwo(..)
only .getBarTwo(String value)
,尽管该参数是可选的。
如何在 GDSL 文件中指定参数是可选的,以便我得到建议的所有三个(有效的常规)选项barTwo
:getBarTwo()
和getBarTwo(String value)
? (不幸的是,“GDSL AWESOMENESS”系列没有帮助。)
jenkins - 使用 Java 的 Jenkins PipelineShared 库
我知道使用 Groovy,可以开发 Jenkins Pipeline 共享库。
我想知道是否可以使用 Java 或任何其他技术开发相同的 Jenkins 管道共享库?
jenkins - 如何在从管道共享库继承的声明性 jenkins 管道中定义其他参数?
我正在寻找这样的事情是否可行: 如何在 jenkinsfile 中定义从管道共享库继承的附加参数?
但是在声明性管道中,我尝试了类似于上述帖子的解决方案,但没有运气。
我需要能够声明一个构建参数的共享库,然后我可以在多个声明的管道中使用它。
像这样的东西:
我想知道是否有人可以提供任何意见?非常感谢。
jenkins-pipeline - 有没有办法将 Jenkinsfile 中的整个 post {} 构建部分移动到全局管道库?
我对 Jenkins 管道相对较新,但是已经实现了一些,我意识到在我发疯之前我需要开始使用 jenkins 共享库。
已经想出了如何在库中定义一些重复的步骤,并从 Jenkinsfile 中以更少的混乱来调用它们,但不确定是否可以为整个后期构建部分做同样的事情(以为我已经阅读了如何定义lib和类似的整个管道),因为这几乎是每个管道代码的静态结束:
我只是不知道如何在语法上实现这一点。当然,我可以将整个后期构建部分定义为一个 lib/var,例如:doPotBuild.groovy
post {}
但是我最终将如何从定义的构建块部分(AKA 阶段)之外的 Jenkinsfile 中调用它。
我可以在 some 中调用它stage('post build){doPostBuild()}
,但它不会满足真实post {}
部分的工作方式,例如,如果前一个阶段出现故障,它不会被执行。
对此有何想法,主要是工作示例?
mockito - groovy.lang.MissingMethodException 与 PowerMock 和 Jenkins getItemByFullName
如何使用 PowerMockito 确保 Jenkins 静态方法返回我的模拟对象?
我看到如果我有一个测试,詹金斯就是模拟。但是,如果我为其他静态方法添加看起来像有效的 PowerMockito.when 的内容,则会收到以下错误。我难住了。
错误
代码
jenkins - 我可以从共享库中使用 jenkins post 步骤吗?
在共享库方法中,我试图在之后执行一个阶段和一个发布步骤:
它给出了一个错误No such DSL method 'post' found among steps
。post 步骤可以在“正常”管道脚本中很好地使用,如下所示:
https ://jenkins.io/doc/book/pipeline/syntax/#post
有没有办法在共享库中使用它?
干杯!