plugins {
id 'groovy'
id 'codenarc'
}
final String testsDir = 'test'
ext['unitTestsDir'] = "${testsDir}/unit"
ext['integrationTestsDir'] = "${testsDir}/integration"
ext['groovyVersion'] = "2.4.11"
sourceSets {
main {
groovy {
// Jenkins Global Workflow Libraries requires sources to be at 'src'
srcDirs = ['src']
}
}
test {
groovy {
// configure the test source set so that it is not part of the Global Pipeline Libraries
srcDirs = ["${unitTestsDir}/src"]
}
}
integrationTests {
groovy {
srcDirs = ["${integrationTestsDir}/src"]
}
resources {
srcDirs = ["${integrationTestsDir}/resources"]
}
}
functionalTests {
groovy {
srcDirs = [functionalTestsDir]
}
compileClasspath += sourceSets.main.compileClasspath + sourceSets.main.output
runtimeClasspath += sourceSets.main.output
}
all {
java {
srcDirs = []
}
}
[main, test, functionalTests].each {
configure(it) {
resources {
srcDirs = []
}
}
}
}
ext.jenkinsCoreVersion = "2.63"
ext.jenkinsTestDependencies = [
"org.jenkins-ci.main:jenkins-test-harness:2.24",
"org.jenkins-ci.main:jenkins-war:${ext.jenkinsCoreVersion}",
"org.jenkins-ci.main:jenkins-war:${ext.jenkinsCoreVersion}:war-for-test@jar"
]
ext.pluginArtifacts = [
"org.jenkins-ci.plugins:mercurial:1.61",
"org.jenkins-ci.plugins:pam-auth:1.3",
"org.jenkins-ci.plugins:script-security:1.29.1",
"org.jenkins-ci.plugins:timestamper:1.8.8",
"org.jenkins-ci.plugins:matrix-project:1.11",
"org.jenkins-ci.plugins:windows-slaves:1.3.1",
"org.jenkins-ci.plugins:github-api:1.86",
"org.jenkins-ci.plugins:mailer:1.20",
"org.jenkins-ci.plugins:ldap:1.16",
"org.jenkins-ci.plugins.icon-shim:icon-shim:2.0.3",
"org.jenkins-ci.plugins:matrix-auth:1.7",
"org.jenkins-ci.plugins:subversion:2.9",
"org.jenkins-ci.plugins:antisamy-markup-formatter:1.5",
"org.jenkins-ci.plugins:pipeline-build-step:2.5.1",
"org.jenkins-ci.plugins:external-monitor-job:1.7",
"org.jenkins-ci.plugins:ant:1.5",
"org.jenkins-ci.plugins:token-macro:2.1",
"org.jenkins-ci.plugins:build-timeout:1.18",
"org.jenkins-ci.plugins:cloudbees-folder:6.0.4",
"org.jenkins-ci.plugins:credentials:2.1.14",
"org.jenkins-ci.plugins:structs:1.9",
"org.jenkins-ci.plugins:pipeline-input-step:2.7",
"org.jenkins-ci.plugins:scm-api:2.1.1",
"org.jenkins-ci.plugins:plain-credentials:1.4",
"org.jenkins-ci.plugins:pipeline-stage-step:2.2",
"org.jenkins-ci.plugins:credentials-binding:1.12",
"org.jenkins-ci.plugins.pipeline-stage-view:pipeline-rest-api:2.8",
"org.jenkins-ci.plugins:email-ext:2.58",
"org.jenkins-ci.plugins:ssh-credentials:1.13",
"io.jenkins.blueocean:blueocean-commons:1.1.4",
"org.jenkins-ci.plugins:git-client:2.4.6",
"org.jenkins-ci.plugins:ssh-agent:1.15",
"org.jenkins-ci.plugins:mapdb-api:1.0.9.0",
"org.jenkins-ci.plugins:git:3.3.2",
"org.jenkins-ci.plugins:junit:1.20",
"org.jenkins-ci.plugins.workflow:workflow-basic-steps:2.6",
"org.jenkins-ci.ui:jquery-detached:1.2.1",
"org.jenkins-ci.plugins:ws-cleanup:0.33",
"org.jenkins-ci.plugins.workflow:workflow-api:2.18",
"io.jenkins.blueocean:blueocean-github-pipeline:1.1.4",
"org.jenkins-ci.plugins:pubsub-light:1.10",
"com.coravy.hudson.plugins.github:github:1.27.0",
"org.jenkins-ci.plugins.workflow:workflow-job:2.13",
"org.jenkins-ci.plugins.workflow:workflow-aggregator:2.5",
"org.jenkins-ci.ui:handlebars:1.1.1",
"org.jenkins-ci.plugins.workflow:workflow-support:2.14",
"org.jenkins-ci.ui:momentjs:1.1.1",
"org.jenkins-ci.plugins.pipeline-stage-view:pipeline-stage-view:2.8",
"org.jenkins-ci.plugins:ssh-slaves:1.20",
"org.jenkins-ci.plugins:durable-task:1.14",
"org.jenkins-ci.plugins.workflow:workflow-step-api:2.12",
"org.jenkins-ci.ui:ace-editor:1.1",
"org.jenkins-ci.plugins:javadoc:1.4",
"org.jenkins-ci.plugins.workflow:workflow-scm-step:2.6",
"io.jenkins.blueocean:blueocean-rest:1.1.4",
"org.jenkins-ci.plugins.workflow:workflow-cps:2.36.1",
"org.jenkins-ci.plugins:docker-commons:1.8",
"org.jenkins-ci.plugins:git-server:1.7",
"org.jenkins-ci.plugins.workflow:workflow-multibranch:2.16",
"org.jenkins-ci.plugins.workflow:workflow-cps-global-lib:2.8",
"org.jenkins-ci.plugins:branch-api:2.0.10",
"org.jenkins-ci.plugins:bouncycastle-api:2.16.1",
"org.jenkinsci.plugins:managed-scripts:1.3",
"org.jenkins-ci.plugins.workflow:workflow-durable-task-step:2.12",
"org.jenkins-ci.plugins:github-organization-folder:1.6",
"org.jenkins-ci.plugins:github-branch-source:2.0.8",
"org.jenkins-ci.plugins:authentication-tokens:1.3",
"org.jenkins-ci.plugins:docker-workflow:1.12",
"com.cloudbees.jenkins.plugins:docker-custom-build-environment:1.6.5",
"org.jenkins-ci.plugins:promoted-builds:2.29",
"org.jenkins-ci.plugins:htmlpublisher:1.14",
"org.jenkins-ci.plugins:docker-build-step:1.43",
"org.jenkins-ci.plugins:pipeline-utility-steps:1.3.0",
"io.jenkins.blueocean:blueocean:1.1.4",
"org.jenkins-ci.plugins:conditional-buildstep:1.3.6",
"org.jenkins-ci.plugins:greenballs:1.15",
"org.jenkins-ci.plugins:parameterized-trigger:2.35",
"com.synopsys.arc.jenkinsci.plugins:job-restrictions:0.6",
"org.jenkins-ci.plugins:cloudbees-bitbucket-branch-source:2.1.2",
"com.sonyericsson.hudson.plugins.rebuild:rebuild:1.25",
"org.jenkins-ci.main:maven-plugin:2.17",
"org.jenkins-ci.plugins:multiple-scms:0.6",
"org.jenkins-ci.plugins:copyartifact:1.38.1",
"org.jenkins-ci.plugins:gatling:1.2.2",
"org.jenkins-ci.plugins:jquery:1.11.2-0",
"org.jenkins-ci.plugins:extended-choice-parameter:0.76",
"org.jenkins-ci.plugins:run-condition:1.0",
"org.jenkins-ci.plugins:flexible-publish:0.15.2",
"io.jenkins.blueocean:blueocean-rest-impl:1.1.4",
"io.jenkins.blueocean:blueocean-dashboard:1.1.4",
"org.jenkins-ci.plugins:build-blocker-plugin:1.7.3",
"org.jenkins-ci.plugins:config-file-provider:2.16.0",
"org.jenkins-ci.plugins:build-name-setter:1.6.5",
"org.jenkins-ci.plugins:ansicolor:0.5.0",
"io.jenkins.blueocean:blueocean-web:1.1.4",
"org.jenkinsci.plugins:pipeline-stage-tags-metadata:1.1.8",
"io.jenkins.blueocean:blueocean-jwt:1.1.4",
"org.jenkins-ci.plugins:blueocean-autofavorite:1.0.0",
"org.jvnet.hudson.plugins:favorite:2.3.0",
"org.jenkins-ci.plugins:throttle-concurrents:2.0.1",
"io.jenkins.blueocean:blueocean-git-pipeline:1.1.4",
"org.jenkins-ci.plugins:resource-disposer:0.6",
"org.jenkins-ci.plugins:sse-gateway:1.15",
"org.jenkinsci.plugins:pipeline-model-api:1.1.8",
"io.jenkins.blueocean:blueocean-pipeline-api-impl:1.1.4",
"org.jenkins-ci.plugins:pipeline-milestone-step:1.3.1",
"io.jenkins.blueocean:blueocean-events:1.1.4",
"org.jenkins-ci.plugins:stash-pullrequest-builder:1.7.0",
"org.jenkinsci.plugins:pipeline-model-definition:1.1.8",
"org.jenkins-ci.plugins:pipeline-github-lib:1.0",
"org.jenkins-ci.plugins:blueocean-display-url:2.0",
"org.jenkins-ci.plugins:variant:1.1",
"io.jenkins.blueocean:blueocean-personalization:1.1.4",
"org.6wind.jenkins:lockable-resources:2.0",
"org.jenkins-ci.plugins:pipeline-graph-analysis:1.4",
"io.jenkins.blueocean:blueocean-config:1.1.4",
"org.jenkins-ci.plugins:job-dsl:1.64",
"org.jenkins-ci.ui:bootstrap:1.3.2",
"org.jenkinsci.plugins:pipeline-model-declarative-agent:1.1.1",
"io.jenkins.blueocean:blueocean-i18n:1.1.4",
"org.jenkins-ci.plugins:jackson2-api:2.7.3",
"org.jenkins-ci.plugins:display-url-api:2.0",
"io.jenkins.blueocean:blueocean-pipeline-editor:0.2.0",
"org.jenkins-ci.plugins:docker-traceability:1.2",
"io.jenkins.blueocean:blueocean-pipeline-scm-api:1.1.4",
"org.jenkinsci.plugins:pipeline-model-extensions:1.1.8"
]
dependencies {
ivy group: 'org.apache.ivy', name: 'ivy', version: '2.4.0'
implementation group: 'org.codehaus.groovy', name: 'groovy-all', version: groovyVersion
testImplementation group: 'org.spockframework', name: 'spock-core', version: '1.1-groovy-2.4'
// We use a lower version of Guava to deal with Jenkins transitive dependency issues.
// In https://github.com/google/guava/wiki/Release21 the MoreExecutors.sameThreadExecutor() was removed.
// Jenkins relies on this method, so if use a Guava version that doesn't have it we get a java.lang.NoSuchMethodError
// It is removed in 21 (https://github.com/google/guava/wiki/Release21), so we have to stay below it
// See https://issues.jenkins-ci.org/browse/JENKINS-36779 for Jenkins issue regarding relocating the dependencies.
testImplementation group: 'com.google.guava', name: 'guava', version: '20.0'
testImplementation group: 'junit', name: 'junit', version: '4.12'
final String slf4jVersion = '1.7.25'
integrationTestsImplementation group: 'org.slf4j', name: 'slf4j-api', version: slf4jVersion
integrationTestsImplementation group: 'org.slf4j', name: 'slf4j-simple', version: slf4jVersion
// Dependency to get source code completion for the resource files
integrationTestsCompileOnly(sourceSets.main.output)
for (final jenkinsTest in project.ext.jenkinsTestDependencies) {
integrationTestsImplementation(jenkinsTest)
}
for (final plugin in project.ext.pluginArtifacts) {
integrationTestsImplementation(plugin) { dependency ->
force = true
artifact {
name = dependency.name
type = 'jar'
}
artifact {
name = dependency.name
type = 'hpi'
}
}
}
}
final integrationTest = tasks.create('integrationTest', Test) {
dependsOn('classes')
mustRunAfter('test')
group = LifecycleBasePlugin.VERIFICATION_GROUP
final SourceSet integrationTestsSourceSet = sourceSets.getByName('integrationTests')
testClassesDirs = integrationTestsSourceSet.output.classesDirs
classpath = sourceSets.integrationTests.runtimeClasspath
forkEvery = 1
// Filter the environment variables down so that they are not inherited from the Gradle process.
// In Jenkins, it inherits all Git (and whatever else variables)
environment = System.getenv().findAll { key, value ->
// Allow keys to pass through if they are prefixed correctly or need to be passed through.
// We will use these to do passthrough of credentials in some tests, and some Jenkins configurations also need to be passed through.
// The SSH environment info, for instance, needs to be setup correctly based on how the 'sshagent' step configures the environment in a Jenkinsfile.
key.startsWith('INTEGRATION_TEST') || key.startsWith('SSH_')
}
// set build directory for Jenkins test harness, JENKINS-26331
systemProperty('buildDirectory', project.buildDir.absolutePath)
// Default is 3 minutes per test so we lower it to something easier to iterate with.
systemProperty('jenkins.test.timeout', 60L)
// Force any temporary files to be created inside the build directory.
systemProperty('java.io.tmpdir', project.file("$buildDir/integrationTestTmp"))
testLogging {
lifecycle.events('started', 'skipped')
}
}
package pipelineUtilities.testing
import com.cloudbees.plugins.credentials.CredentialsScope
import com.cloudbees.plugins.credentials.CredentialsStore
import com.cloudbees.plugins.credentials.SystemCredentialsProvider
import com.cloudbees.plugins.credentials.domains.Domain
import com.cloudbees.plugins.credentials.impl.UsernamePasswordCredentialsImpl
import groovy.util.logging.Slf4j
import jenkins.plugins.git.GitSCMSource
import org.jenkinsci.plugins.workflow.libs.GlobalLibraries
import org.jenkinsci.plugins.workflow.libs.LibraryConfiguration
import org.jenkinsci.plugins.workflow.libs.SCMSourceRetriever
import org.junit.Rule
import org.jvnet.hudson.test.JenkinsRule
import spock.lang.Specification
@Slf4j
abstract class PipelineIntegrationBaseSpec extends Specification {
@Rule
JenkinsRule rule = new JenkinsRule()
void setup() {
configureSlaves()
configureGlobalLibraries()
configureCredentials()
}
private void configureCredentials() {
if (Conditions.ARTIFACTORY_CREDENTIALS()) {
log.debug('Artifactory credentials present, creating and adding them to @JenkinsRule')
final Domain domain = Domain.global()
final CredentialsStore store =
rule.jenkins.getExtensionList(SystemCredentialsProvider.ProviderImpl)
.first()
.getStore(rule.jenkins)
final UsernamePasswordCredentialsImpl artifactoryLogin = new UsernamePasswordCredentialsImpl(
CredentialsScope.GLOBAL,
'Artifactory-UsernamePassword-ArtifactoryReadWrite',
'',
System.getenv('INTEGRATION_TEST_ARTIFACTORY_USERNAME'),
System.getenv('INTEGRATION_TEST_ARTIFACTORY_PASSWORD')
)
store.addCredentials(domain, artifactoryLogin)
}
}
private void configureGlobalLibraries() {
final SCMSourceRetriever retriever = new SCMSourceRetriever(
new GitSCMSource(
null,
System.getProperty('user.dir'),
'',
'local-source-code',
// Fetch everything - if this is not used builds fail on Jenkins for some reason
'*:refs/remotes/origin/*',
'*',
'',
true
)
)
final LibraryConfiguration localLibrary =
new LibraryConfiguration('pipelineUtilities', retriever)
localLibrary.implicit = true
localLibrary.defaultVersion = 'git rev-parse HEAD'.execute().text.trim()
localLibrary.allowVersionOverride = false
GlobalLibraries.get().setLibraries(Collections.singletonList(localLibrary))
}
private void configureSlaves() {
rule.jenkins.numExecutors = 0
rule.jenkins.save()
rule.createOnlineSlave()
rule.createOnlineSlave()
}
}
[Pipeline] withCredentials
[Pipeline] }
[Pipeline] // node
[Pipeline] End of Pipeline
java.lang.NoSuchMethodError: org.jvnet.tiger_types.Types.bind(Ljava/lang/reflect/Type;Ljava/lang/reflect/GenericDeclaration;Ljava/lang/reflect/ParameterizedType;)Ljava/lang/reflect/Type;
at org.kohsuke.stapler.ClassDescriptor.findMethods(ClassDescriptor.java:173)
at org.kohsuke.stapler.ClassDescriptor.findMethods(ClassDescriptor.java:147)
at org.kohsuke.stapler.ClassDescriptor.<init>(ClassDescriptor.java:85)
at org.jenkinsci.plugins.structs.describable.DescribableModel.<init>(DescribableModel.java:122)
at org.jenkinsci.plugins.structs.describable.UninstantiatedDescribable.instantiate(UninstantiatedDescribable.java:166)
at org.jenkinsci.plugins.structs.describable.DescribableModel.coerce(DescribableModel.java:372)
at org.jenkinsci.plugins.structs.describable.DescribableModel.coerceList(DescribableModel.java:463)
at org.jenkinsci.plugins.structs.describable.DescribableModel.coerce(DescribableModel.java:365)
at org.jenkinsci.plugins.structs.describable.DescribableModel.buildArguments(DescribableModel.java:318)
at org.jenkinsci.plugins.structs.describable.DescribableModel.instantiate(DescribableModel.java:259)
at org.jenkinsci.plugins.workflow.steps.StepDescriptor.newInstance(StepDescriptor.java:201)
at org.jenkinsci.plugins.workflow.cps.DSL.invokeStep(DSL.java:205)
at org.jenkinsci.plugins.workflow.cps.DSL.invokeMethod(DSL.java:150)
at org.jenkinsci.plugins.workflow.cps.CpsScript.invokeMethod(CpsScript.java:108)
at groovy.lang.MetaClassImpl.invokeMethodOnGroovyObject(MetaClassImpl.java:1278)
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1138)
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1022)
at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.call(PogoMetaClassSite.java:42)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:48)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:113)
at com.cloudbees.groovy.cps.sandbox.DefaultInvoker.methodCall(DefaultInvoker.java:18)
at com.mkobit.jenkins.pipelines.docker.DockerSupport.ensureImagePresent(/var/lib/jenkins/workspace/utilities_git-dir-traversal-X6RAXJN7IA4NTXCT5HTZLDWF3EMB2AV4RCPAUH6BVTWESOYJ47RQ/build/integrationTestTmp/jenkinsTests.tmp/jenkins4639428473108692947test/jobs/project/builds/1/libs/pipelineUtilities/src/com/mkobit/jenkins/pipelines/docker/DockerSupport.groovy:216)
at com.mkobit.jenkins.pipelines.BaseScriptSupport.withScriptDelegate(file:/var/lib/jenkins/workspace/utilities_git-dir-traversal-X6RAXJN7IA4NTXCT5HTZLDWF3EMB2AV4RCPAUH6BVTWESOYJ47RQ/build/integrationTestTmp/jenkinsTests.tmp/jenkins4639428473108692947test/jobs/project/builds/1/libs/pipelineUtilities/src/com/mkobit/jenkins/pipelines/BaseScriptSupport.groovy:58)
at com.mkobit.jenkins.pipelines.docker.DockerSupport.ensureImagePresent(/var/lib/jenkins/workspace/utilities_git-dir-traversal-X6RAXJN7IA4NTXCT5HTZLDWF3EMB2AV4RCPAUH6BVTWESOYJ47RQ/build/integrationTestTmp/jenkinsTests.tmp/jenkins4639428473108692947test/jobs/project/builds/1/libs/pipelineUtilities/src/com/mkobit/jenkins/pipelines/docker/DockerSupport.groovy:204)
at com.mkobit.jenkins.pipelines.docker.DockerSupport.insideContainer(/var/lib/jenkins/workspace/utilities_git-dir-traversal-X6RAXJN7IA4NTXCT5HTZLDWF3EMB2AV4RCPAUH6BVTWESOYJ47RQ/build/integrationTestTmp/jenkinsTests.tmp/jenkins4639428473108692947test/jobs/project/builds/1/libs/pipelineUtilities/src/com/mkobit/jenkins/pipelines/docker/DockerSupport.groovy:162)
at com.mkobit.jenkins.pipelines.BaseScriptSupport.withScriptDelegate(file:/var/lib/jenkins/workspace/utilities_git-dir-traversal-X6RAXJN7IA4NTXCT5HTZLDWF3EMB2AV4RCPAUH6BVTWESOYJ47RQ/build/integrationTestTmp/jenkinsTests.tmp/jenkins4639428473108692947test/jobs/project/builds/1/libs/pipelineUtilities/src/com/mkobit/jenkins/pipelines/BaseScriptSupport.groovy:58)
at com.mkobit.jenkins.pipelines.docker.DockerSupport.insideContainer(/var/lib/jenkins/workspace/utilities_git-dir-traversal-X6RAXJN7IA4NTXCT5HTZLDWF3EMB2AV4RCPAUH6BVTWESOYJ47RQ/build/integrationTestTmp/jenkinsTests.tmp/jenkins4639428473108692947test/jobs/project/builds/1/libs/pipelineUtilities/src/com/mkobit/jenkins/pipelines/docker/DockerSupport.groovy:157)
at com.mkobit.jenkins.pipelines.docker.DockerSupport.insideContainer(/var/lib/jenkins/workspace/utilities_git-dir-traversal-X6RAXJN7IA4NTXCT5HTZLDWF3EMB2AV4RCPAUH6BVTWESOYJ47RQ/build/integrationTestTmp/jenkinsTests.tmp/jenkins4639428473108692947test/jobs/project/builds/1/libs/pipelineUtilities/src/com/mkobit/jenkins/pipelines/docker/DockerSupport.groovy:74)
at com.mkobit.jenkins.pipelines.docker.DockerSupportIntegrationSpec.WorkflowScript.run(WorkflowScript:8)
at ___cps.transform___(Native Method)
at com.cloudbees.groovy.cps.impl.ContinuationGroup.methodCall(ContinuationGroup.java:57)
at com.cloudbees.groovy.cps.impl.FunctionCallBlock$ContinuationImpl.dispatchOrArg(FunctionCallBlock.java:109)
at com.cloudbees.groovy.cps.impl.FunctionCallBlock$ContinuationImpl.fixArg(FunctionCallBlock.java:82)
at sun.reflect.GeneratedMethodAccessor33.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at com.cloudbees.groovy.cps.impl.ContinuationPtr$ContinuationImpl.receive(ContinuationPtr.java:72)
at com.cloudbees.groovy.cps.impl.ClosureBlock.eval(ClosureBlock.java:46)
at com.cloudbees.groovy.cps.Next.step(Next.java:83)
at com.cloudbees.groovy.cps.Continuable$1.call(Continuable.java:173)
at com.cloudbees.groovy.cps.Continuable$1.call(Continuable.java:162)
at org.codehaus.groovy.runtime.GroovyCategorySupport$ThreadCategoryInfo.use(GroovyCategorySupport.java:122)
at org.codehaus.groovy.runtime.GroovyCategorySupport.use(GroovyCategorySupport.java:261)
at com.cloudbees.groovy.cps.Continuable.run0(Continuable.java:162)
at org.jenkinsci.plugins.workflow.cps.SandboxContinuable.access$001(SandboxContinuable.java:19)
at org.jenkinsci.plugins.workflow.cps.SandboxContinuable$1.call(SandboxContinuable.java:35)
at org.jenkinsci.plugins.workflow.cps.SandboxContinuable$1.call(SandboxContinuable.java:32)
at org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.GroovySandbox.runInSandbox(GroovySandbox.java:108)
at org.jenkinsci.plugins.workflow.cps.SandboxContinuable.run0(SandboxContinuable.java:32)
at org.jenkinsci.plugins.workflow.cps.CpsThread.runNextChunk(CpsThread.java:174)
at org.jenkinsci.plugins.workflow.cps.CpsThreadGroup.run(CpsThreadGroup.java:330)
at org.jenkinsci.plugins.workflow.cps.CpsThreadGroup.access$100(CpsThreadGroup.java:82)
at org.jenkinsci.plugins.workflow.cps.CpsThreadGroup$2.call(CpsThreadGroup.java:242)
at org.jenkinsci.plugins.workflow.cps.CpsThreadGroup$2.call(CpsThreadGroup.java:230)
at org.jenkinsci.plugins.workflow.cps.CpsVmExecutorService$2.call(CpsVmExecutorService.java:64)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at hudson.remoting.SingleLaneExecutorService$1.run(SingleLaneExecutorService.java:112)
at jenkins.util.ContextResettingExecutorService$1.run(ContextResettingExecutorService.java:28)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
Finished: FAILURE
------
Expected: is <SUCCESS>
but: was <FAILURE>
at org.hamcrest.MatcherAssert.assertThat(MatcherAssert.java:20)
at org.junit.Assert.assertThat(Assert.java:956)
at org.jvnet.hudson.test.JenkinsRule.assertBuildStatus(JenkinsRule.java:1157)
at org.jvnet.hudson.test.JenkinsRule.assertBuildStatus(JenkinsRule.java:1163)
at org.jvnet.hudson.test.JenkinsRule.assertBuildStatusSuccess(JenkinsRule.java:1192)
at com.mkobit.jenkins.pipelines.docker.DockerSupportIntegrationSpec.Can run inside Docker Hub library image(DockerSupportIntegrationSpec.groovy:72)
| | | | | +--- org.jvnet:tiger-types:2.2
| | | | | +--- org.jvnet:tiger-types:2.2
--
You received this message because you are subscribed to the Google Groups "Jenkins Developers" group.
To unsubscribe from this group and stop receiving emails from it, send an email to jenkinsci-dev+unsubscribe@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/jenkinsci-dev/b0a2264b-9de2-475e-9089-04db3ab78740%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
Not easy to double check because otp, but reminds me https://issues.jenkins-ci.org/browse/JENKINS-39689My 2 cents
Le 4 août 2017 22:49, "Michael Kobit" <mko...@gmail.com> a écrit :
Thanks Jesse, I'll have to take a look at the POM 2.31+ and see where I'm going wrong. I don't see it locally (generally) and it only happens on our CI server. I'm wondering if maybe I'm not configuring the plugin classpath for the test harness correctly.--Interestingly enough, when I run ./gradlew dependencies (see attached for full output) I do only see 2.2 on the dependency graph:| | | | | +--- org.jvnet:tiger-types:2.2
| | | | | +--- org.jvnet:tiger-types:2.2
On Friday, August 4, 2017 at 3:04:55 PM UTC-5, Jesse Glick wrote:On Fri, Aug 4, 2017 at 3:33 PM, Michael Kobit <mko...@gmail.com> wrote:
> I see errors like
> java.lang.NoSuchMethodError:
> org.jvnet.tiger_types.Types.bind(Ljava/lang/reflect/Type;Ljava/lang/reflect/GenericDeclaration;Ljava/lang/reflect/ParameterizedType;)Ljava/lang/reflect/Type;.
> Anybody have any ideas?
Use plugin POM 2.31+ to find your mismatched dependencies.
> Some of build.gradle
…or you are on your own if you choose to use Gradle.
You received this message because you are subscribed to the Google Groups "Jenkins Developers" group.
To unsubscribe from this group and stop receiving emails from it, send an email to jenkinsci-de...@googlegroups.com.