由于缺少依赖项,无法加载JenkinsPipelineSpecification

nwwlzxa7  于 2023-04-11  发布在  Jenkins
关注(0)|答案(1)|浏览(128)

我正在尝试使用Spock框架编写一个小的Groovy测试文件来加载Jenkinsfile。
我正在尝试编写一些单元测试来验证Jenkinsfile是否按预期工作,并使用这些单元测试来查看Jenkinsfile的任何更新都没有破坏任何
下面是我的Jenkins测试文件

package tests.library

import com.homeaway.devtools.jenkins.testing.JenkinsPipelineSpecification

public class JenkinsfileWithPropertySpec extends JenkinsPipelineSpecification {

       protected Script Jenkinsfile

       def setup() {
           Jenkinsfile = loadPipelineScriptForTest("pipelineConfig/Jenkinsfile")
       }

       def "Jenkinsfile"() {
           when:
                Jenkinsfile.run()
           then:
                1 * getPipelineMock("node")("legacy", _)
                1 * getPipelineMock("echo")("hello world")
        }
}

当我尝试使用Gradle运行它时,它失败并出现错误:

$ ~/source/gradle/gradle-8.0.2/bin/gradle clean test 
> Task :compileTestGroovy FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':compileTestGroovy'.
> Unable to load class com.homeaway.devtools.jenkins.testing.JenkinsPipelineSpecification due to missing dependency Ljenkins/model/Jenkins;

* Try:
> Run with --stacktrace option to get the stack trace.
> Run with --info or --debug option to get more log output.
> Run with --scan to get full insights.

* Get more help at https://help.gradle.org
BUILD FAILED in 1s
2 actionable tasks: 2 executed

我的build.gradle包含以下内容:

apply plugin:   'groovy'

repositories {
    mavenCentral()
}

dependencies {
   testImplementation 'junit:junit:4.13'
   testImplementation 'org.codehaus.groovy:groovy-all:2.4.14'
   testImplementation 'org.spockframework:spock-core:1.1-groovy-2.4'
   testImplementation 'com.lesfurets:jenkins-pipeline-unit:1.1'
   testImplementation 'cglib:cglib-nodep:3.2.2'
   testImplementation 'org.objenesis:objenesis:1.2'
   testImplementation 'org.assertj:assertj-core:3.7.0'
   testImplementation 'com.homeaway.devtools.jenkins:jenkins-spock:2.1.5'
}

sourceSets {

    test {
        groovy {
            srcDirs= ['pipelineTests/groovy']
        }
    }
}

有什么建议我做错了,谢谢

tvz2xvvm

tvz2xvvm1#

看起来你缺少了jenkins-core依赖项。根据jenkins-spockdocumentation
这个库的一些依赖项被标记为Maven提供的作用域。这意味着Maven将把它们拉进来构建和测试这个库,但是当你使用这个库时,你必须自己把这些库作为依赖项拉进来。
在这些库中,有一个jenkins-core,它包含您的构建找不到的jenkins.model.Jenkins类。
请尝试将jenkins-core依赖项添加到您的文件,并检查它是否解决了问题。

相关问题