【问题标题】:Jenkins Pipeline - Workflow CPS plugin JAR dependenciesJenkins Pipeline - 工作流 CPS 插件 JAR 依赖项
【发布时间】: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,因此我可以使用标准单元测试来测试库。

标签: jenkins gradle dependencies pom.xml jenkins-pipeline


【解决方案1】:

您要模拟的 CPS 类不包含插件或工作流库引入的方法/变量,因此这种方法可能不会完全令人满意。

面对同样的挑战,我采取了务实的方法,在我的测试源中创建自己的 TestScript 接口并对其进行 Mock,而不是在类中键入脚本引用。

缺点是没有对引用脚本的内容进行 IDE 代码检查,并且在我添加测试时必须手动向 TestScript 添加签名(这也容易出错,因为我已经手动确保这些签名匹配)。

但它可以工作,并且避免被拖入插件依赖地狱。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-02-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-12
    • 1970-01-01
    相关资源
    最近更新 更多