Jenkins Pipeline - 工作流 CPS 插件 JAR 依赖项
Posted
技术标签:
【中文标题】Jenkins Pipeline - 工作流 CPS 插件 JAR 依赖项【英文标题】:Jenkins Pipeline - Workflow CPS plugin JAR dependencies 【发布时间】:2017-10-29 03:03:56 【问题描述】:我正在为Jenkins Pipeline Shared Groovy Library 中使用的代码实施单元测试。具体来说,我需要模拟 Jenkinsfile 中可用的steps
对象,它是org.jenkinsci.plugins.workflow.cps.DSL
的一个实例。在我的 Gradle 构建中,我指定了一个依赖项,如下所示:
testCompile group: 'org.jenkins-ci.plugins.workflow', name: 'workflow-cps', version: '2.30', ext: 'jar'
这是托管上述课程的项目。在没有将 ext
指定为 JAR 的情况下,Gradle 会检索 .hpi
文件,因为这是项目的 pom.xml 中定义的包装;显然我需要覆盖它并为我的项目获取 JAR。但是,在执行此操作时,Gradle 不会下载 workflow-cps
JAR 的传递依赖项,我发现自己必须使用通过反复试验确定的所有依赖项填充我的 build.gradle。有没有办法检索传递依赖关系,或者这是工作流cps项目的限制以及它如何定义它的pom.xml?
【问题讨论】:
你用的是什么测试框架? 我正在使用 Spock。我保持vars
目录非常轻量级,并将复杂的逻辑添加到src
,因此我可以使用标准单元测试来测试库。
【参考方案1】:
您要模拟的 CPS 类不包含插件或工作流库引入的方法/变量,因此这种方法可能不会完全令人满意。
面对同样的挑战,我采取了务实的方法,在我的测试源中创建自己的 TestScript 接口并对其进行 Mock,而不是在类中键入脚本引用。
缺点是没有对引用脚本的内容进行 IDE 代码检查,并且在我添加测试时必须手动向 TestScript 添加签名(这也容易出错,因为我已经手动确保这些签名匹配)。
但它可以工作,并且避免被拖入插件依赖地狱。
【讨论】:
以上是关于Jenkins Pipeline - 工作流 CPS 插件 JAR 依赖项的主要内容,如果未能解决你的问题,请参考以下文章