Общая библиотека Jenkins Pipeline с использованием @Grab-тестов Спока - PullRequest
0 голосов
/ 19 сентября 2018

Я пытаюсь добавить стороннюю библиотеку в один из моих кодов общей библиотеки конвейеров, следуя инструкциям «Расширение с помощью общей библиотеки»:

https://jenkins.io/doc/book/pipeline/shared-libraries

@GrabResolver(name='custom', root='http://my.nexus/maven')
@Grab("com.packageA.serviceA:artifactA:1.0.0")

import com.packageA.serviceA.ClassA

Это не удалось с классом IvySettings не найден.После следующего сообщения StackOverflow:

Получение класса не найдено: org.apache.ivy.core.report.ResolveReport при использовании GroovyClassLoader в Java

Мне пришлось добавить это вмой pom.xml:

    <dependency>
        <groupId>org.apache.ivy</groupId>
        <artifactId>ivy</artifactId>
        <version>2.4.0</version>
    </dependency>

Я справился с проблемой IvySettings not found.Но все мои модульные тесты Spock для класса, для которого я добавляю @Grab, провалились с

java.lang.NoClassDefFoundError: com.mypackage.pipeline.client.MyClient
    at java.lang.Class.forName(Class.java:348)
    at net.sf.cglib.core.ReflectUtils.defineClass(ReflectUtils.java:386)
    at net.sf.cglib.core.AbstractClassGenerator.create(AbstractClassGenerator.java:219)
    at net.sf.cglib.proxy.Enhancer.createHelper(Enhancer.java:377)
    at net.sf.cglib.proxy.Enhancer.createClass(Enhancer.java:317)
    at org.spockframework.mock.runtime.ProxyBasedMockFactory$CglibMockFactory.createMock(ProxyBasedMockFactory.java:91)
    at org.spockframework.mock.runtime.ProxyBasedMockFactory.create(ProxyBasedMockFactory.java:49)
    at org.spockframework.mock.runtime.GroovyMockFactory.create(GroovyMockFactory.java:66)
    at org.spockframework.mock.runtime.CompositeMockFactory.create(CompositeMockFactory.java:44)
    at org.spockframework.lang.SpecInternals.createMock(SpecInternals.java:45)
    at org.spockframework.lang.SpecInternals.createMockImpl(SpecInternals.java:281)
    at org.spockframework.lang.SpecInternals.GroovyMockImpl(SpecInternals.java:199)
    at myRollbackTest.Missing object(myRollbackTest.groovy:184)

. В этих тестах используются GroovyMock и GroovySpy.

Кто-нибудь когда-нибудь заставлял Grab работать с GroovyMock / Spy из Спока?

1 Ответ

0 голосов
/ 24 сентября 2018

Я пытался добавить @Grab для не-PSL кода в src / com / packageA / serviceA, то есть: не в var / *.

Согласно документации Jenkins, @Grab работает только с кодом библиотеки Pipeline Shared.

Я работал над этим, используя функцию совместно используемой библиотеки @Grab a Pipeline и вызывая эту функцию из моего кода не PSL в src / com / packageA / serviceA.

...