Jenkins Pipeline - 工作流 CPS 插件 JAR 依赖项

标签 jenkins gradle dependencies pom.xml jenkins-pipeline

我正在为 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/

相关文章:

jenkins - 从 Jenkins jacoco 插件获取 "Error while reading the sourcefile!"错误

svn - Jenkins 在成功构建后提交

groovy - CodeNarc是否可以使用Groovy特性?

Android gradle - 如何远程访问 keystore

android - 在Android Studio中将Gradle从3.3升级到4.1后出现错误

java - 具有 Jar 和包依赖项的 Makefile

javascript - 我们真的需要以性能的名义从 devDependency 中剥离包吗?

java - Jenkins Cobertura 构建 - NoClassDefFoundError

angularjs - 生产服务器上缺少 html 元素

build - 避免额外的 ExternalProject 下载