我正在为 Jenkins Pipeline Shared Groovy Library 中使用的代码执行单元测试.具体来说,我需要模拟 steps
Jenkinsfile 中可用的对象,它是 org.jenkinsci.plugins.workflow.cps.DSL
的一个实例.在我的 Gradle 构建中,我指定了一个依赖项,如下所示:
testCompile group: 'org.jenkins-ci.plugins.workflow', name: 'workflow-cps', version: '2.30', ext: 'jar'
这是托管上述类(class)的项目。不指定
ext
作为 JAR,Gradle 检索 .hpi
文件,因为这是在项目的 pom.xml 中定义的包装;显然我需要覆盖它并为我的项目获取 JAR。但是,在执行此操作时,Gradle 不会下载 workflow-cps
的传递依赖项。 JAR 和我发现自己必须使用通过反复试验确定的所有依赖项来填充我的 build.gradle。有没有办法检索传递依赖项,或者这是工作流cps项目的限制以及它如何定义它的pom.xml?
最佳答案
您要模拟的 CPS 类不包含插件或工作流库引入的方法/变量,因此这种方法可能不会完全令人满意。
面对同样的挑战,我采取了务实的方法,在我的测试源中创建自己的 TestScript 接口(interface)并模拟它,而不是在类中键入脚本引用。
缺点是没有对引用脚本的内容进行 IDE 代码检查,并且在添加测试时必须手动向 TestScript 添加签名(这也容易出错,因为我手动确保这些签名匹配)。
但它有效,并且避免了被拖入插件依赖 hell 。
关于Jenkins Pipeline - 工作流 CPS 插件 JAR 依赖项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44231731/