I have a Gradle project in Bitbucket repo with the following pipelines configuration
# This is a sample build configuration for Java (Gradle).
# Check our guides at https://confluence.atlassian.com/x/zd-5Mw for more examples.
# Only use spaces to indent your .yml configuration.
# -----
# You can specify a custom docker image from Docker Hub as your build environment.
image: java:8
pipelines:
default:
- step:
caches:
- gradle
script: # Modify the commands below to build your repository.
# You must commit the Gradle wrapper to your repository
# https://docs.gradle.org/current/userguide/gradle_wrapper.html
- bash ./gradlew -s build
services:
- docker
A test fails, but it seems that not full stack trace is displayed in web interface (note that there're no location info on the last line):
<span>java.lang.ExceptionInInitializerError</span><span>java.lang.ExceptionInInitializerError</span><span> at sun.misc.Unsafe.ensureClassInitialized(Native Method)</span><span> at sun.reflect.UnsafeFieldAccessorFactory.newFieldAccessor(<a href="http://unsafefieldaccessorfactory.java:43/" target="_blank" rel="nofollow noopener noreferrer">UnsafeFieldAccessorFactory.java:43</a>)</span><span> at sun.reflect.ReflectionFactory.newFieldAccessor(<a href="http://reflectionfactory.java:142/" target="_blank" rel="nofollow noopener noreferrer">ReflectionFactory.java:142</a>)</span><span> at java.lang.reflect.Field.acquireFieldAccessor(<a href="http://field.java:1088/" target="_blank" rel="nofollow noopener noreferrer">Field.java:1088</a>)</span><span> at java.lang.reflect.Field.getFieldAccessor(<a href="http://field.java:1069/" target="_blank" rel="nofollow noopener noreferrer">Field.java:1069</a>)</span><span> at java.lang.reflect.Field.get(<a href="http://field.java:393/" target="_blank" rel="nofollow noopener noreferrer">Field.java:393</a>)</span><span> at org.junit.runners.model.FrameworkField.get(<a href="http://frameworkfield.java:73/" target="_blank" rel="nofollow noopener noreferrer">FrameworkField.java:73</a>)</span><span> at org.junit.runners.model.TestClass.getAnnotatedFieldValues(<a href="http://testclass.java:230/" target="_blank" rel="nofollow noopener noreferrer">TestClass.java:230</a>)</span><span> at org.junit.runners.ParentRunner.classRules(<a href="http://parentrunner.java:255/" target="_blank" rel="nofollow noopener noreferrer">ParentRunner.java:255</a>)</span><span> at org.junit.runners.ParentRunner.withClassRules(<a href="http://parentrunner.java:244/" target="_blank" rel="nofollow noopener noreferrer">ParentRunner.java:244</a>)</span><span> at org.junit.runners.ParentRunner.classBlock(<a href="http://parentrunner.java:194/" target="_blank" rel="nofollow noopener noreferrer">ParentRunner.java:194</a>)</span><span> at <a href="http://org.junit.runners.parentrunner.run/" target="_blank" rel="nofollow noopener noreferrer">org.junit.runners.ParentRunner.run</a>(<a href="http://parentrunner.java:362/" target="_blank" rel="nofollow noopener noreferrer">ParentRunner.java:362</a>)</span><span> at org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecuter.runTestClass(<a href="http://junittestclassexecuter.java:114/" target="_blank" rel="nofollow noopener noreferrer">JUnitTestClassExecuter.java:114</a>)</span><span> at org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecuter.execute(<a href="http://junittestclassexecuter.java:57/" target="_blank" rel="nofollow noopener noreferrer">JUnitTestClassExecuter.java:57</a>)</span><span> at org.gradle.api.internal.tasks.testing.junit.JUnitTestClassProcessor.processTestClass(<a href="http://junittestclassprocessor.java:66/" target="_blank" rel="nofollow noopener noreferrer">JUnitTestClassProcessor.java:66</a>)</span><span> at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.processTestClass(<a href="http://suitetestclassprocessor.java:51/" target="_blank" rel="nofollow noopener noreferrer">SuiteTestClassProcessor.java:51</a>)</span><span> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)</span><span> at sun.reflect.NativeMethodAccessorImpl.invoke(<a href="http://nativemethodaccessorimpl.java:62/" target="_blank" rel="nofollow noopener noreferrer">NativeMethodAccessorImpl.java:62</a>)</span><span> at sun.reflect.DelegatingMethodAccessorImpl.invoke(<a href="http://delegatingmethodaccessorimpl.java:43/" target="_blank" rel="nofollow noopener noreferrer">DelegatingMethodAccessorImpl.java:43</a>)</span><span> at java.lang.reflect.Method.invoke(<a href="http://method.java:498/" target="_blank" rel="nofollow noopener noreferrer">Method.java:498</a>)</span><span> at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(<a href="http://reflectiondispatch.java:35/" target="_blank" rel="nofollow noopener noreferrer">ReflectionDispatch.java:35</a>)</span><span> at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(<a href="http://reflectiondispatch.java:24/" target="_blank" rel="nofollow noopener noreferrer">ReflectionDispatch.java:24</a>)</span><span> at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(<a href="http://contextclassloaderdispatch.java:32/" target="_blank" rel="nofollow noopener noreferrer">ContextClassLoaderDispatch.java:32</a>)</span><span> at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke</span>
I think so because if I run the test locally with the following image (as suggested here), there is full output:
java.lang.reflect.UndeclaredThrowableException
at com.sun.proxy.$Proxy29.exec(Unknown Source)
at org.testcontainers.DockerClientFactory.runInsideDocker(DockerClientFactory.java:226)
at org.testcontainers.DockerClientFactory.client(DockerClientFactory.java:116)
at org.testcontainers.containers.GenericContainer.<init>(GenericContainer.java:126)
at com.devexperts.usages.server.indexer.repository_manager.RepositoryManager.<init>(RepositoryManager.java:82)
at com.devexperts.usages.server.indexer.repository_manager.Nexus2RepositoryManager.<init>(Nexus2RepositoryManager.java:13)
at com.devexperts.usages.server.indexer.Nexus2ContainerTest.<init>(Nexus2ContainerTest.java:9)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at org.junit.runners.BlockJUnit4ClassRunner.createTest(BlockJUnit4ClassRunner.java:217)
at org.junit.runners.BlockJUnit4ClassRunner$1.runReflectiveCall(BlockJUnit4ClassRunner.java:266)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
at org.junit.runners.BlockJUnit4ClassRunner.methodBlock(BlockJUnit4ClassRunner.java:263)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
at org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecuter.runTestClass(JUnitTestClassExecuter.java:114)
at org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecuter.execute(JUnitTestClassExecuter.java:57)
at org.gradle.api.internal.tasks.testing.junit.JUnitTestClassProcessor.processTestClass(JUnitTestClassProcessor.java:66)
at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.processTestClass(SuiteTestClassProcessor.java:51)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:32)
at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:93)
at com.sun.proxy.$Proxy1.processTestClass(Unknown Source)
at org.gradle.api.internal.tasks.testing.worker.TestWorker.processTestClass(TestWorker.java:109)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:146)
at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:128)
at org.gradle.internal.remote.internal.hub.MessageHub$Handler.run(MessageHub.java:404)
at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)
at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55)
at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.testcontainers.dockerclient.AuditLoggingDockerClient.lambda$wrappedCommand$14(AuditLoggingDockerClient.java:98)
... 52 more
Caused by: com.github.dockerjava.api.exception.DockerException: {"message":"authorization denied by plugin pipelines: -v only supports $BITBUCKET_CLONE_DIR and its subdirectories"}
at com.github.dockerjava.netty.handler.HttpResponseHandler.channelRead0(HttpResponseHandler.java:111)
at com.github.dockerjava.netty.handler.HttpResponseHandler.channelRead0(HttpResponseHandler.java:33)
at org.testcontainers.shaded.io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:105)
at org.testcontainers.shaded.io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362)
at org.testcontainers.shaded.io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348)
at org.testcontainers.shaded.io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340)
at org.testcontainers.shaded.io.netty.handler.logging.LoggingHandler.channelRead(LoggingHandler.java:241)
at org.testcontainers.shaded.io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362)
at org.testcontainers.shaded.io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348)
at org.testcontainers.shaded.io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340)
at org.testcontainers.shaded.io.netty.channel.CombinedChannelDuplexHandler$DelegatingChannelHandlerContext.fireChannelRead(CombinedChannelDuplexHandler.java:438)
at org.testcontainers.shaded.io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:310)
at org.testcontainers.shaded.io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:284)
at org.testcontainers.shaded.io.netty.channel.CombinedChannelDuplexHandler.channelRead(CombinedChannelDuplexHandler.java:253)
at org.testcontainers.shaded.io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362)
at org.testcontainers.shaded.io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348)
at org.testcontainers.shaded.io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340)
at org.testcontainers.shaded.io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1334)
at org.testcontainers.shaded.io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362)
at org.testcontainers.shaded.io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348)
at org.testcontainers.shaded.io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:926)
at org.testcontainers.shaded.io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:134)
at org.testcontainers.shaded.io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:644)
at org.testcontainers.shaded.io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:579)
at org.testcontainers.shaded.io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:496)
at org.testcontainers.shaded.io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:458)
at org.testcontainers.shaded.io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:858)
at org.testcontainers.shaded.io.netty.util.concurrent.DefaultThreadFactory$DefaultRunnableDecorator.run(DefaultThreadFactory.java:138)
... 1 more
It looks like the output I see on bitbucket is (almost) the prefix of the full one, and it's really strange.
The question is: how to set up the pipeline to see full stack trace?
Let me know if I should provide more information.
--
Thanks in advance,
Roman