Code Monkey home page Code Monkey logo

yet-another-docker-plugin's Introduction

Yet Another Docker Plugin

Minimal java version Coverity Scan Build Status Build Status codecov.io jitpack.io

Project that produces jenkins hpi plugin with Docker related features.

History

When docker-plugin was half-working state i started enhancing/fixing and stabilised it. But was unable to continue comfortable development and left to this fork.

Docs

Goals

  • Quality

  • Full lifecycle for Jenkins Cloud Slave

  • docker-java reference implementation

Installation

Java 8 is required.

Main Jenkins Update center or Jucies.

If you don’t want to change your Update Center, you can download .hpi from the mirror http://mirrors.jenkins-ci.org/plugins/yet-another-docker-plugin/ or and upload it to Jenkins Plugin Manager.

Disclaimer

  • Kept when it possible. Backward compatibility may be broken in any time.

Questions

If you have any questions feel free to open GitHub issue.

yet-another-docker-plugin's People

Contributors

bhcopeland avatar denami avatar dependabot[bot] avatar fboudra avatar gamma avatar gcbartlett avatar hb-2012 avatar hugome avatar kostyasha avatar krufab avatar kumy avatar mikhirev avatar pronovic avatar samrocketman avatar scddev avatar steffen-wilke avatar witokondoria avatar wmorrell avatar ybongard avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

yet-another-docker-plugin's Issues

Slave is created even when connection to container fails

When I have a broken Docker image that can not start SSH, yad tries to connect to it 60 times. But even when all 60 attempts fail and an exception is thrown, the slave is created:

Jul 06, 2016 11:24:08 AM com.github.kostyasha.yad.utils.HostAndPortChecker bySshWithEveryRetryWaitFor
SEVERE: Failed to connect to localhost:32793 (try 60/60) - There was a problem while connecting to localhost:32793
Jul 06, 2016 11:24:08 AM com.github.kostyasha.yad.launcher.DockerComputerSSHLauncher waitUp
WARNING: Can't connect to ssh                              
java.io.IOException: There was a problem while connecting to localhost:32793
at com.trilead.ssh2.Connection.connect(Connection.java:818)
        at com.github.kostyasha.yad.utils.HostAndPortChecker.bySshWithEveryRetryWaitFor(HostAndPortChecker.java:89)
        at com.github.kostyasha.yad.launcher.DockerComputerSSHLauncher.waitUp(DockerComputerSSHLauncher.java:90)
        at com.github.kostyasha.yad.DockerCloud.provisionWithWait(DockerCloud.java:216)
        at com.github.kostyasha.yad.DockerCloud.lambda$provision$0(DockerCloud.java:117)
        at jenkins.util.ContextResettingExecutorService$2.call(ContextResettingExecutorService.java:46)
        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)
Caused by: java.net.ConnectException: Connection refused
        at java.net.PlainSocketImpl.socketConnect(Native Method)
        at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
        at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
        at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
        at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
        at java.net.Socket.connect(Socket.java:589)
        at com.trilead.ssh2.transport.TransportManager.establishConnection(TransportManager.java:354)
        at com.trilead.ssh2.transport.TransportManager.initialize(TransportManager.java:467)
        at com.trilead.ssh2.Connection.connect(Connection.java:758)
        ... 9 more
Jul 06, 2016 11:24:08 AM com.github.kostyasha.yad.launcher.DockerComputerSSHLauncher getSSHLauncher
INFO: Creating slave SSH launcher for 'localhost:32793'
[07/06/16 11:24:10] SSH Launch of Localhost-2072c43aac2a on localhost failed in 9 ms
Jul 06, 2016 11:24:10 AM hudson.slaves.NodeProvisioner$2 run
INFO: my/image provisioning successfully completed. We have now 2 computer(s)

call for interested people

I feel that some things can be still broken, i'm again at point when time to implement integration tests before release. As i'm working in parallel on docker-java development some mess in library related code may exist (some docker-java future code here or vice-versa).
There is lack of documentation, but i think interested in people will understand.

@hawky-4s- @lanwen hi, are you interested in testing?

Improve plugin configuration in order to scale easily

In my setup, I've got several docker servers deployed (+20) and each of them provide +10 different containers images. In the plugin terms, it's +20 YADP clouds with +10 docker templates each.

In fact, I have a cloud of bare-metal machines and when we ask to provision a specific label, it can be provisioned on any of the machines that can provision the requested docker image.

In the configuration layout, it means +200 configurations. Each time we add a new server, we have to duplicate the +10 docker templates. If we add a new docker template, we have to duplicate it for each of the +20 YADP clouds. All these copy/paste can potentially introduce typo and takes too much time.

A cloud can contain multiple servers and the docker images available in one cloud can also be available in another cloud. A docker template can be applied to several docker server.

Bottom line, it doesn't scale. Current UI doesn't allow to describe the typology of the cloud(s) in a flexible manner.

I think the configuration UI will need some re-work to cope with larger deployment than 1 cloud/1 docker server/1 docker image and allow to easily scale and safely.

I don't have a proposal at the moment but I wanted to state the problem. Make sure it's acknowledge because it's probably not a trivial task to fix.

Authentication error when authenticate to pull an image

Hi
i have a docker container configured in a private registry, but im getting an authentication error when i set Pull always.
The username and password is OK, at least my docker login command is done OK from command line.

The log is:

onError
Error during callback
com.github.kostyasha.yad_docker_java.com.github.dockerjava.api.exception.InternalServerErrorException: Get https://myrepositoryURL/v2/mycontainer/tags/list: unknown: Authentication is required

    at com.github.kostyasha.yad_docker_java.com.github.dockerjava.jaxrs.filter.ResponseStatusExceptionFilter.filter(ResponseStatusExceptionFilter.java:53)
    at com.github.kostyasha.yad_docker_java.org.glassfish.jersey.client.ClientFilteringStages$ResponseFilterStage.apply(ClientFilteringStages.java:140)
    at com.github.kostyasha.yad_docker_java.org.glassfish.jersey.client.ClientFilteringStages$ResponseFilterStage.apply(ClientFilteringStages.java:128)
    at com.github.kostyasha.yad_docker_java.org.glassfish.jersey.process.internal.Stages.process(Stages.java:171)
    at com.github.kostyasha.yad_docker_java.org.glassfish.jersey.client.ClientRuntime.invoke(ClientRuntime.java:257)
    at com.github.kostyasha.yad_docker_java.org.glassfish.jersey.client.JerseyInvocation$2.call(JerseyInvocation.java:701)
    at com.github.kostyasha.yad_docker_java.org.glassfish.jersey.internal.Errors.process(Errors.java:315)
    at com.github.kostyasha.yad_docker_java.org.glassfish.jersey.internal.Errors.process(Errors.java:297)
    at com.github.kostyasha.yad_docker_java.org.glassfish.jersey.internal.Errors.process(Errors.java:228)
    at com.github.kostyasha.yad_docker_java.org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:444)
    at com.github.kostyasha.yad_docker_java.org.glassfish.jersey.client.JerseyInvocation.invoke(JerseyInvocation.java:697)
    at com.github.kostyasha.yad_docker_java.org.glassfish.jersey.client.JerseyInvocation$Builder.method(JerseyInvocation.java:448)
    at com.github.kostyasha.yad_docker_java.org.glassfish.jersey.client.JerseyInvocation$Builder.post(JerseyInvocation.java:349)
    at com.github.kostyasha.yad_docker_java.com.github.dockerjava.jaxrs.async.POSTCallbackNotifier.response(POSTCallbackNotifier.java:29)
    at com.github.kostyasha.yad_docker_java.com.github.dockerjava.jaxrs.async.AbstractCallbackNotifier.call(AbstractCallbackNotifier.java:50)
    at com.github.kostyasha.yad_docker_java.com.github.dockerjava.jaxrs.async.AbstractCallbackNotifier.call(AbstractCallbackNotifier.java:24)
    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)

Sep 15, 2016 7:27:18 PM SEVERE com.github.kostyasha.yad.DockerCloud lambda$provision$0
Error in provisioning; template='DockerSlaveTemplate[id=517fad34-52aa-4624-b1fc-88ff19e1bae2,labelString=jsdt-build-slave,launcher=com.github.kostyasha.yad.launcher.DockerComputerSSHLauncher@133e5f4a,remoteFs=/home/jenkins,maxCapacity=10,mode=EXCLUSIVE,retentionStrategy=com.github.kostyasha.yad.strategy.DockerOnceRetentionStrategy@27f,numExecutors=1,dockerContainerLifecycle=com.github.kostyasha.yad.DockerContainerLifecycle@36be9cad[image=myrepo/jsdt_build_slave,pullImage=com.github.kostyasha.yad.commons.DockerPullImage@3529acc0,createContainer=DockerCreateContainer[command=,hostname=,dnsHosts=[],volumes=[],volumesFrom=[],environment=[],bindPorts=,bindAllPorts=false,memoryLimit=0,cpuShares=<null>,privileged=false,tty=false,macAddress=<null>,extraHosts=[],networkMode=<null>,devices=[],cpusetCpus=,cpusetMems=],stopContainer=com.github.kostyasha.yad.commons.DockerStopContainer@27f,removeContainer=com.github.kostyasha.yad.commons.DockerRemoveContainer@5b0f],nodeProperties=[]]' for cloud='local docker'
com.github.kostyasha.yad_docker_java.com.github.dockerjava.api.exception.InternalServerErrorException: Get https://myrepourl/v2/jsdt_build_slave/tags/list: unknown: Authentication is required

    at com.github.kostyasha.yad_docker_java.com.github.dockerjava.jaxrs.filter.ResponseStatusExceptionFilter.filter(ResponseStatusExceptionFilter.java:53)
    at com.github.kostyasha.yad_docker_java.org.glassfish.jersey.client.ClientFilteringStages$ResponseFilterStage.apply(ClientFilteringStages.java:140)
    at com.github.kostyasha.yad_docker_java.org.glassfish.jersey.client.ClientFilteringStages$ResponseFilterStage.apply(ClientFilteringStages.java:128)
    at com.github.kostyasha.yad_docker_java.org.glassfish.jersey.process.internal.Stages.process(Stages.java:171)
    at com.github.kostyasha.yad_docker_java.org.glassfish.jersey.client.ClientRuntime.invoke(ClientRuntime.java:257)
    at com.github.kostyasha.yad_docker_java.org.glassfish.jersey.client.JerseyInvocation$2.call(JerseyInvocation.java:701)
    at com.github.kostyasha.yad_docker_java.org.glassfish.jersey.internal.Errors.process(Errors.java:315)
    at com.github.kostyasha.yad_docker_java.org.glassfish.jersey.internal.Errors.process(Errors.java:297)
    at com.github.kostyasha.yad_docker_java.org.glassfish.jersey.internal.Errors.process(Errors.java:228)
    at com.github.kostyasha.yad_docker_java.org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:444)
    at com.github.kostyasha.yad_docker_java.org.glassfish.jersey.client.JerseyInvocation.invoke(JerseyInvocation.java:697)
    at com.github.kostyasha.yad_docker_java.org.glassfish.jersey.client.JerseyInvocation$Builder.method(JerseyInvocation.java:448)
    at com.github.kostyasha.yad_docker_java.org.glassfish.jersey.client.JerseyInvocation$Builder.post(JerseyInvocation.java:349)
    at com.github.kostyasha.yad_docker_java.com.github.dockerjava.jaxrs.async.POSTCallbackNotifier.response(POSTCallbackNotifier.java:29)
    at com.github.kostyasha.yad_docker_java.com.github.dockerjava.jaxrs.async.AbstractCallbackNotifier.call(AbstractCallbackNotifier.java:50)
    at com.github.kostyasha.yad_docker_java.com.github.dockerjava.jaxrs.async.AbstractCallbackNotifier.call(AbstractCallbackNotifier.java:24)
    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)

Add network (net) parameter to docker template settings

Hello all,

I would really like to see the "--net" parameter in the docker template settings.
That allows me to start my jenkins slave in a predefined network.
Or is there any work around that I could use to set this parameter?

Greetings

SSL issue with swarm

Hi,

First of all, thank you for this project! It is really a great news to see this plugin activity.

Currently, I have some trouble with the plugin, when I try to use it against a swarm cluster. (UCP)

my docker client uses the SSL certificate to communicate with swarm. And it is working fine.
But when I try to add those certificate to the plugin and simply do a test connection, I got the following error:

Oct 06, 2016 3:58:08 PM com.github.kostyasha.yad_docker_java.com.github.dockerjava.core.async.ResultCallbackTemplate onError
SEVERE: Error during callback
com.github.kostyasha.yad_docker_java.io.netty.handler.codec.DecoderException: javax.net.ssl.SSLHandshakeException: General SSLEngine problem
at com.github.kostyasha.yad_docker_java.io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:442)
at com.github.kostyasha.yad_docker_java.io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:248)
at com.github.kostyasha.yad_docker_java.io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:372)
at com.github.kostyasha.yad_docker_java.io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:358)
at com.github.kostyasha.yad_docker_java.io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:350)
at com.github.kostyasha.yad_docker_java.io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1334)
at com.github.kostyasha.yad_docker_java.io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:372)
at com.github.kostyasha.yad_docker_java.io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:358)
at com.github.kostyasha.yad_docker_java.io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:926)
at com.github.kostyasha.yad_docker_java.io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:123)
at com.github.kostyasha.yad_docker_java.io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:571)
at com.github.kostyasha.yad_docker_java.io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:512)
at com.github.kostyasha.yad_docker_java.io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:426)
at com.github.kostyasha.yad_docker_java.io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:398)
at com.github.kostyasha.yad_docker_java.io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:877)
at com.github.kostyasha.yad_docker_java.io.netty.util.concurrent.DefaultThreadFactory$DefaultRunnableDecorator.run(DefaultThreadFactory.java:144)
at java.lang.Thread.run(Thread.java:745)
Caused by: javax.net.ssl.SSLHandshakeException: General SSLEngine problem
at sun.security.ssl.Handshaker.checkThrown(Handshaker.java:1431)
at sun.security.ssl.SSLEngineImpl.checkTaskThrown(SSLEngineImpl.java:535)
at sun.security.ssl.SSLEngineImpl.readNetRecord(SSLEngineImpl.java:813)
at sun.security.ssl.SSLEngineImpl.unwrap(SSLEngineImpl.java:781)
at javax.net.ssl.SSLEngine.unwrap(SSLEngine.java:624)
at com.github.kostyasha.yad_docker_java.io.netty.handler.ssl.SslHandler.unwrap(SslHandler.java:1094)
at com.github.kostyasha.yad_docker_java.io.netty.handler.ssl.SslHandler.unwrap(SslHandler.java:966)
at com.github.kostyasha.yad_docker_java.io.netty.handler.ssl.SslHandler.decode(SslHandler.java:900)
at com.github.kostyasha.yad_docker_java.io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:411)
... 16 more
Caused by: javax.net.ssl.SSLHandshakeException: General SSLEngine problem
at sun.security.ssl.Alerts.getSSLException(Alerts.java:192)
at sun.security.ssl.SSLEngineImpl.fatal(SSLEngineImpl.java:1728)
at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:304)
at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:296)
at sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1509)
at sun.security.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:216)
at sun.security.ssl.Handshaker.processLoop(Handshaker.java:979)
at sun.security.ssl.Handshaker$1.run(Handshaker.java:919)
at sun.security.ssl.Handshaker$1.run(Handshaker.java:916)
at java.security.AccessController.doPrivileged(Native Method)
at sun.security.ssl.Handshaker$DelegatedTask.run(Handshaker.java:1369)
at com.github.kostyasha.yad_docker_java.io.netty.handler.ssl.SslHandler.runDelegatedTasks(SslHandler.java:1120)
at com.github.kostyasha.yad_docker_java.io.netty.handler.ssl.SslHandler.unwrap(SslHandler.java:1005)
... 18 more
Caused by: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
at sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:387)
at sun.security.validator.PKIXValidator.engineValidate(PKIXValidator.java:292)
at sun.security.validator.Validator.validate(Validator.java:260)
at sun.security.ssl.X509TrustManagerImpl.validate(X509TrustManagerImpl.java:324)
at sun.security.ssl.X509TrustManagerImpl.checkTrusted(X509TrustManagerImpl.java:281)
at sun.security.ssl.X509TrustManagerImpl.checkServerTrusted(X509TrustManagerImpl.java:136)
at sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1496)
... 26 more
Caused by: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
at sun.security.provider.certpath.SunCertPathBuilder.build(SunCertPathBuilder.java:141)
at sun.security.provider.certpath.SunCertPathBuilder.engineBuild(SunCertPathBuilder.java:126)
at java.security.cert.CertPathBuilder.build(CertPathBuilder.java:280)
at sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:382)
... 32 more

On the jenkins configuration side, after pressing on the test button, nothing is happening. It stays in "testing connection"

I tried using netty and jersey.

The main difference is that jersey complains immediately on the configuration page.

Another note:
3 or 4 weeks ago, I was able to make work. But I cannot reproduce it...

Do you know if this issue is a known concern?
Any ideas how I can fix it and help to fix it if needed in the plugin?

Thank you

0.1.0-rc14 binary from Jenkins update center is built with Java8, which is too new for a stable enterprise instal

We're running a Jenkins install on Ubuntu 14.04, which ships with Java7. Everything works, but when we installed Yet Another Docker Plugin, we got in logs:

java.lang.InstantiationException: java.lang.UnsupportedClassVersionError: com/github/kostyasha/yad/DockerBuildVariableContributor : Unsupported major.minor version 52.0

52.0 corresponds to java8. Our Jenkins install is quite busy, and it's pretty risky endeavor to upgrade system java for the need of just one plugin. Can you please consider building a new release with Java7 (assuming source is compatible/easy fixable). Thanks.

Can be installed in parallel with "the other Docker plugin"?

It would be nice to get disclosure (in docs/wiki) on subj - whether they can be installed altogether at all, and to what extent can be used in parallel (e.g, how bad an idea to let both plugins to control the same Docker daemon). Thanks.

Not Provisioning 'ryayon/docker-jenkins-slave-puppet'; Server 'par-jenkins-02 Jenkins slave' full with '0' container(s)

Hi,

First of all, thank you for your great job and implication on this module.

I have followed the instructions from the Docker Plugin to use this plugin (I suppose, it is the same instructions)

  1. I use the ryayon/docker-jenkins-slave-puppet docker image.
  2. par-jenkins-02 is the machine where Docker runs. the Test Connection for the cloud configuration returns correct information.
  3. The docker template seems configured correctly.

However, I can't run any build on the cloud provider.
This is what I get in the Jenkins logs:

Aug 16, 2016 5:02:38 PM com.github.kostyasha.yad.DockerCloud provision
INFO: Will provision 'ryayon/docker-jenkins-slave-puppet', for label: 'null', in cloud: 'par-jenkins-02 Jenkins slave'
Aug 16, 2016 5:02:38 PM com.github.kostyasha.yad.DockerCloud addProvisionedSlave
INFO: Not Provisioning 'ryayon/docker-jenkins-slave-puppet'; Server 'par-jenkins-02 Jenkins slave' full with '0' container(s)
Aug 16, 2016 5:02:48 PM com.github.kostyasha.yad.DockerCloud provision
INFO: Asked to provision load: '1', for: 'null' label
Aug 16, 2016 5:02:48 PM com.github.kostyasha.yad.DockerCloud provision
INFO: Will provision 'ryayon/docker-jenkins-slave-puppet', for label: 'null', in cloud: 'par-jenkins-02 Jenkins slave'
Aug 16, 2016 5:02:48 PM com.github.kostyasha.yad.DockerCloud addProvisionedSlave
INFO: Not Provisioning 'ryayon/docker-jenkins-slave-puppet'; Server 'par-jenkins-02 Jenkins slave' full with '0' container(s)

I run Jenkins 2.18 and the plugin version is 0.1.0-rc20.

Any idea?

Regards,
Rudy

(pending—Waiting for next available executor)

Docker 1.10.3
Jenkins 1.642.4

Apr 22, 2016 12:04:25 PM WARNING hudson.model.Descriptor$NewInstanceBindInterceptor instantiate
falling back to default instantiation com.github.kostyasha.yad.strategy.DockerOnceRetentionStrategy {"stapler-class":"com.github.kostyasha.yad.strategy.DockerOnceRetentionStrategy","idleMinutes":"10"}
java.lang.NullPointerException
    at hudson.model.Descriptor$NewInstanceBindInterceptor.instantiate(Descriptor.java:643)
    at org.kohsuke.stapler.RequestImpl.instantiate(RequestImpl.java:675)
    at org.kohsuke.stapler.RequestImpl.access$200(RequestImpl.java:81)
    at org.kohsuke.stapler.RequestImpl$TypePair.convertJSON(RequestImpl.java:600)
    at org.kohsuke.stapler.RequestImpl.bindJSON(RequestImpl.java:404)
    at org.kohsuke.stapler.RequestImpl.injectSetters(RequestImpl.java:764)
    at org.kohsuke.stapler.RequestImpl.instantiate(RequestImpl.java:703)
    at org.kohsuke.stapler.RequestImpl.access$200(RequestImpl.java:81)
    at org.kohsuke.stapler.RequestImpl$TypePair.convertJSON(RequestImpl.java:600)
    at org.kohsuke.stapler.RequestImpl.bindJSON(RequestImpl.java:404)
    at org.kohsuke.stapler.RequestImpl.bindJSON(RequestImpl.java:400)
    at hudson.model.Descriptor.newInstance(Descriptor.java:588)
    at hudson.model.Descriptor$NewInstanceBindInterceptor.onConvert(Descriptor.java:663)
    at org.kohsuke.stapler.RequestImpl$TypePair.convertJSON(RequestImpl.java:543)
    at org.kohsuke.stapler.RequestImpl$TypePair.convertJSON(RequestImpl.java:638)
    at org.kohsuke.stapler.RequestImpl.bindJSON(RequestImpl.java:404)
    at org.kohsuke.stapler.RequestImpl.instantiate(RequestImpl.java:697)
    at org.kohsuke.stapler.RequestImpl.access$200(RequestImpl.java:81)
    at org.kohsuke.stapler.RequestImpl$TypePair.convertJSON(RequestImpl.java:600)
    at org.kohsuke.stapler.RequestImpl.bindJSON(RequestImpl.java:404)
    at org.kohsuke.stapler.RequestImpl.bindJSON(RequestImpl.java:400)
    at hudson.model.Descriptor.newInstance(Descriptor.java:588)
    at hudson.model.Descriptor.newInstancesFromHeteroList(Descriptor.java:1034)
    at hudson.model.Descriptor.newInstancesFromHeteroList(Descriptor.java:996)
    at hudson.util.DescribableList.rebuildHetero(DescribableList.java:208)
    at jenkins.model.GlobalCloudConfiguration.configure(GlobalCloudConfiguration.java:23)
    at jenkins.model.Jenkins.configureDescriptor(Jenkins.java:2965)
    at jenkins.model.Jenkins.doConfigSubmit(Jenkins.java:2928)
    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.kohsuke.stapler.Function$InstanceFunction.invoke(Function.java:298)
    at org.kohsuke.stapler.Function.bindAndInvoke(Function.java:161)
    at org.kohsuke.stapler.Function.bindAndInvokeAndServeResponse(Function.java:96)
    at org.kohsuke.stapler.MetaClass$1.doDispatch(MetaClass.java:121)
    at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:53)
    at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:746)
    at org.kohsuke.stapler.Stapler.invoke(Stapler.java:876)
    at org.kohsuke.stapler.Stapler.invoke(Stapler.java:649)
    at org.kohsuke.stapler.Stapler.service(Stapler.java:238)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:848)
    at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:686)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1494)
    at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:132)
    at hudson.util.PluginServletFilter.doFilter(PluginServletFilter.java:123)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1482)
    at hudson.security.csrf.CrumbFilter.doFilter(CrumbFilter.java:49)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1482)
    at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:84)
    at hudson.security.ChainedServletFilter.doFilter(ChainedServletFilter.java:76)
    at hudson.security.HudsonFilter.doFilter(HudsonFilter.java:171)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1482)
    at org.kohsuke.stapler.compression.CompressionFilter.doFilter(CompressionFilter.java:49)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1482)
    at hudson.util.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:81)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1482)
    at org.kohsuke.stapler.DiagnosticThreadNameFilter.doFilter(DiagnosticThreadNameFilter.java:30)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1474)
    at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:499)
    at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:137)
    at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:533)
    at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:231)
    at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1086)
    at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:428)
    at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:193)
    at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1020)
    at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:135)
    at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116)
    at org.eclipse.jetty.server.Server.handle(Server.java:370)
    at org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:489)
    at org.eclipse.jetty.server.AbstractHttpConnection.content(AbstractHttpConnection.java:960)
    at org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.content(AbstractHttpConnection.java:1021)
    at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:865)
    at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:235)
    at org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:82)
    at org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:668)
    at org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:52)
    at winstone.BoundedExecutorService$1.run(BoundedExecutorService.java:77)
    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)

Apr 22, 2016 12:04:25 PM WARNING hudson.model.Descriptor$NewInstanceBindInterceptor instantiate
falling back to default instantiation com.github.kostyasha.yad.launcher.DockerComputerSSHLauncher {"stapler-class":"com.github.kostyasha.yad.launcher.DockerComputerSSHLauncher","sshConnector":{"credentialsId":"2965e3ac-17d2-48ea-b56e-22e73269a5d7","port":"22","javaPath":"","jvmOptions":"","prefixStartSlaveCmd":"","suffixStartSlaveCmd":"","launchTimeoutSeconds":"","maxNumRetries":"","retryWaitTime":""}}
java.lang.NullPointerException
    at hudson.model.Descriptor$NewInstanceBindInterceptor.instantiate(Descriptor.java:643)
    at org.kohsuke.stapler.RequestImpl.instantiate(RequestImpl.java:675)
    at org.kohsuke.stapler.RequestImpl.access$200(RequestImpl.java:81)
    at org.kohsuke.stapler.RequestImpl$TypePair.convertJSON(RequestImpl.java:600)
    at org.kohsuke.stapler.RequestImpl.bindJSON(RequestImpl.java:404)
    at org.kohsuke.stapler.RequestImpl.injectSetters(RequestImpl.java:764)
    at org.kohsuke.stapler.RequestImpl.instantiate(RequestImpl.java:703)
    at org.kohsuke.stapler.RequestImpl.access$200(RequestImpl.java:81)
    at org.kohsuke.stapler.RequestImpl$TypePair.convertJSON(RequestImpl.java:600)
    at org.kohsuke.stapler.RequestImpl.bindJSON(RequestImpl.java:404)
    at org.kohsuke.stapler.RequestImpl.bindJSON(RequestImpl.java:400)
    at hudson.model.Descriptor.newInstance(Descriptor.java:588)
    at hudson.model.Descriptor$NewInstanceBindInterceptor.onConvert(Descriptor.java:663)
    at org.kohsuke.stapler.RequestImpl$TypePair.convertJSON(RequestImpl.java:543)
    at org.kohsuke.stapler.RequestImpl$TypePair.convertJSON(RequestImpl.java:638)
    at org.kohsuke.stapler.RequestImpl.bindJSON(RequestImpl.java:404)
    at org.kohsuke.stapler.RequestImpl.instantiate(RequestImpl.java:697)
    at org.kohsuke.stapler.RequestImpl.access$200(RequestImpl.java:81)
    at org.kohsuke.stapler.RequestImpl$TypePair.convertJSON(RequestImpl.java:600)
    at org.kohsuke.stapler.RequestImpl.bindJSON(RequestImpl.java:404)
    at org.kohsuke.stapler.RequestImpl.bindJSON(RequestImpl.java:400)
    at hudson.model.Descriptor.newInstance(Descriptor.java:588)
    at hudson.model.Descriptor.newInstancesFromHeteroList(Descriptor.java:1034)
    at hudson.model.Descriptor.newInstancesFromHeteroList(Descriptor.java:996)
    at hudson.util.DescribableList.rebuildHetero(DescribableList.java:208)
    at jenkins.model.GlobalCloudConfiguration.configure(GlobalCloudConfiguration.java:23)
    at jenkins.model.Jenkins.configureDescriptor(Jenkins.java:2965)
    at jenkins.model.Jenkins.doConfigSubmit(Jenkins.java:2928)
    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.kohsuke.stapler.Function$InstanceFunction.invoke(Function.java:298)
    at org.kohsuke.stapler.Function.bindAndInvoke(Function.java:161)
    at org.kohsuke.stapler.Function.bindAndInvokeAndServeResponse(Function.java:96)
    at org.kohsuke.stapler.MetaClass$1.doDispatch(MetaClass.java:121)
    at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:53)
    at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:746)
    at org.kohsuke.stapler.Stapler.invoke(Stapler.java:876)
    at org.kohsuke.stapler.Stapler.invoke(Stapler.java:649)
    at org.kohsuke.stapler.Stapler.service(Stapler.java:238)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:848)
    at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:686)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1494)
    at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:132)
    at hudson.util.PluginServletFilter.doFilter(PluginServletFilter.java:123)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1482)
    at hudson.security.csrf.CrumbFilter.doFilter(CrumbFilter.java:49)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1482)
    at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:84)
    at hudson.security.ChainedServletFilter.doFilter(ChainedServletFilter.java:76)
    at hudson.security.HudsonFilter.doFilter(HudsonFilter.java:171)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1482)
    at org.kohsuke.stapler.compression.CompressionFilter.doFilter(CompressionFilter.java:49)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1482)
    at hudson.util.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:81)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1482)
    at org.kohsuke.stapler.DiagnosticThreadNameFilter.doFilter(DiagnosticThreadNameFilter.java:30)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1474)
    at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:499)
    at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:137)
    at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:533)
    at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:231)
    at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1086)
    at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:428)
    at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:193)
    at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1020)
    at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:135)
    at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116)
    at org.eclipse.jetty.server.Server.handle(Server.java:370)
    at org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:489)
    at org.eclipse.jetty.server.AbstractHttpConnection.content(AbstractHttpConnection.java:960)
    at org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.content(AbstractHttpConnection.java:1021)
    at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:865)
    at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:235)
    at org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:82)
    at org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:668)
    at org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:52)
    at winstone.BoundedExecutorService$1.run(BoundedExecutorService.java:77)
    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)

Apr 22, 2016 12:05:07 PM WARNING hudson.model.Descriptor$NewInstanceBindInterceptor instantiate
falling back to default instantiation com.github.kostyasha.yad.strategy.DockerOnceRetentionStrategy {"stapler-class":"com.github.kostyasha.yad.strategy.DockerOnceRetentionStrategy","idleMinutes":"10"}
java.lang.NullPointerException
    at hudson.model.Descriptor$NewInstanceBindInterceptor.instantiate(Descriptor.java:643)
    at org.kohsuke.stapler.RequestImpl.instantiate(RequestImpl.java:675)
    at org.kohsuke.stapler.RequestImpl.access$200(RequestImpl.java:81)
    at org.kohsuke.stapler.RequestImpl$TypePair.convertJSON(RequestImpl.java:600)
    at org.kohsuke.stapler.RequestImpl.bindJSON(RequestImpl.java:404)
    at org.kohsuke.stapler.RequestImpl.injectSetters(RequestImpl.java:764)
    at org.kohsuke.stapler.RequestImpl.instantiate(RequestImpl.java:703)
    at org.kohsuke.stapler.RequestImpl.access$200(RequestImpl.java:81)
    at org.kohsuke.stapler.RequestImpl$TypePair.convertJSON(RequestImpl.java:600)
    at org.kohsuke.stapler.RequestImpl.bindJSON(RequestImpl.java:404)
    at org.kohsuke.stapler.RequestImpl.bindJSON(RequestImpl.java:400)
    at hudson.model.Descriptor.newInstance(Descriptor.java:588)
    at hudson.model.Descriptor$NewInstanceBindInterceptor.onConvert(Descriptor.java:663)
    at org.kohsuke.stapler.RequestImpl$TypePair.convertJSON(RequestImpl.java:543)
    at org.kohsuke.stapler.RequestImpl$TypePair.convertJSON(RequestImpl.java:638)
    at org.kohsuke.stapler.RequestImpl.bindJSON(RequestImpl.java:404)
    at org.kohsuke.stapler.RequestImpl.instantiate(RequestImpl.java:697)
    at org.kohsuke.stapler.RequestImpl.access$200(RequestImpl.java:81)
    at org.kohsuke.stapler.RequestImpl$TypePair.convertJSON(RequestImpl.java:600)
    at org.kohsuke.stapler.RequestImpl.bindJSON(RequestImpl.java:404)
    at org.kohsuke.stapler.RequestImpl.bindJSON(RequestImpl.java:400)
    at hudson.model.Descriptor.newInstance(Descriptor.java:588)
    at hudson.model.Descriptor.newInstancesFromHeteroList(Descriptor.java:1034)
    at hudson.model.Descriptor.newInstancesFromHeteroList(Descriptor.java:996)
    at hudson.util.DescribableList.rebuildHetero(DescribableList.java:208)
    at jenkins.model.GlobalCloudConfiguration.configure(GlobalCloudConfiguration.java:23)
    at jenkins.model.Jenkins.configureDescriptor(Jenkins.java:2965)
    at jenkins.model.Jenkins.doConfigSubmit(Jenkins.java:2928)
    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.kohsuke.stapler.Function$InstanceFunction.invoke(Function.java:298)
    at org.kohsuke.stapler.Function.bindAndInvoke(Function.java:161)
    at org.kohsuke.stapler.Function.bindAndInvokeAndServeResponse(Function.java:96)
    at org.kohsuke.stapler.MetaClass$1.doDispatch(MetaClass.java:121)
    at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:53)
    at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:746)
    at org.kohsuke.stapler.Stapler.invoke(Stapler.java:876)
    at org.kohsuke.stapler.Stapler.invoke(Stapler.java:649)
    at org.kohsuke.stapler.Stapler.service(Stapler.java:238)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:848)
    at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:686)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1494)
    at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:132)
    at hudson.util.PluginServletFilter.doFilter(PluginServletFilter.java:123)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1482)
    at hudson.security.csrf.CrumbFilter.doFilter(CrumbFilter.java:49)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1482)
    at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:84)
    at hudson.security.ChainedServletFilter.doFilter(ChainedServletFilter.java:76)
    at hudson.security.HudsonFilter.doFilter(HudsonFilter.java:171)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1482)
    at org.kohsuke.stapler.compression.CompressionFilter.doFilter(CompressionFilter.java:49)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1482)
    at hudson.util.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:81)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1482)
    at org.kohsuke.stapler.DiagnosticThreadNameFilter.doFilter(DiagnosticThreadNameFilter.java:30)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1474)
    at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:499)
    at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:137)
    at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:533)
    at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:231)
    at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1086)
    at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:428)
    at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:193)
    at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1020)
    at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:135)
    at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116)
    at org.eclipse.jetty.server.Server.handle(Server.java:370)
    at org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:489)
    at org.eclipse.jetty.server.AbstractHttpConnection.content(AbstractHttpConnection.java:960)
    at org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.content(AbstractHttpConnection.java:1021)
    at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:865)
    at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:240)
    at org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:82)
    at org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:668)
    at org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:52)
    at winstone.BoundedExecutorService$1.run(BoundedExecutorService.java:77)
    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)

Apr 22, 2016 12:05:07 PM WARNING hudson.model.Descriptor$NewInstanceBindInterceptor instantiate
falling back to default instantiation com.github.kostyasha.yad.launcher.DockerComputerSSHLauncher {"stapler-class":"com.github.kostyasha.yad.launcher.DockerComputerSSHLauncher","sshConnector":{"credentialsId":"2965e3ac-17d2-48ea-b56e-22e73269a5d7","port":"22","javaPath":"","jvmOptions":"","prefixStartSlaveCmd":"","suffixStartSlaveCmd":"","launchTimeoutSeconds":"","maxNumRetries":"0","retryWaitTime":"0"}}
java.lang.NullPointerException
    at hudson.model.Descriptor$NewInstanceBindInterceptor.instantiate(Descriptor.java:643)
    at org.kohsuke.stapler.RequestImpl.instantiate(RequestImpl.java:675)
    at org.kohsuke.stapler.RequestImpl.access$200(RequestImpl.java:81)
    at org.kohsuke.stapler.RequestImpl$TypePair.convertJSON(RequestImpl.java:600)
    at org.kohsuke.stapler.RequestImpl.bindJSON(RequestImpl.java:404)
    at org.kohsuke.stapler.RequestImpl.injectSetters(RequestImpl.java:764)
    at org.kohsuke.stapler.RequestImpl.instantiate(RequestImpl.java:703)
    at org.kohsuke.stapler.RequestImpl.access$200(RequestImpl.java:81)
    at org.kohsuke.stapler.RequestImpl$TypePair.convertJSON(RequestImpl.java:600)
    at org.kohsuke.stapler.RequestImpl.bindJSON(RequestImpl.java:404)
    at org.kohsuke.stapler.RequestImpl.bindJSON(RequestImpl.java:400)
    at hudson.model.Descriptor.newInstance(Descriptor.java:588)
    at hudson.model.Descriptor$NewInstanceBindInterceptor.onConvert(Descriptor.java:663)
    at org.kohsuke.stapler.RequestImpl$TypePair.convertJSON(RequestImpl.java:543)
    at org.kohsuke.stapler.RequestImpl$TypePair.convertJSON(RequestImpl.java:638)
    at org.kohsuke.stapler.RequestImpl.bindJSON(RequestImpl.java:404)
    at org.kohsuke.stapler.RequestImpl.instantiate(RequestImpl.java:697)
    at org.kohsuke.stapler.RequestImpl.access$200(RequestImpl.java:81)
    at org.kohsuke.stapler.RequestImpl$TypePair.convertJSON(RequestImpl.java:600)
    at org.kohsuke.stapler.RequestImpl.bindJSON(RequestImpl.java:404)
    at org.kohsuke.stapler.RequestImpl.bindJSON(RequestImpl.java:400)
    at hudson.model.Descriptor.newInstance(Descriptor.java:588)
    at hudson.model.Descriptor.newInstancesFromHeteroList(Descriptor.java:1034)
    at hudson.model.Descriptor.newInstancesFromHeteroList(Descriptor.java:996)
    at hudson.util.DescribableList.rebuildHetero(DescribableList.java:208)
    at jenkins.model.GlobalCloudConfiguration.configure(GlobalCloudConfiguration.java:23)
    at jenkins.model.Jenkins.configureDescriptor(Jenkins.java:2965)
    at jenkins.model.Jenkins.doConfigSubmit(Jenkins.java:2928)
    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.kohsuke.stapler.Function$InstanceFunction.invoke(Function.java:298)
    at org.kohsuke.stapler.Function.bindAndInvoke(Function.java:161)
    at org.kohsuke.stapler.Function.bindAndInvokeAndServeResponse(Function.java:96)
    at org.kohsuke.stapler.MetaClass$1.doDispatch(MetaClass.java:121)
    at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:53)
    at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:746)
    at org.kohsuke.stapler.Stapler.invoke(Stapler.java:876)
    at org.kohsuke.stapler.Stapler.invoke(Stapler.java:649)
    at org.kohsuke.stapler.Stapler.service(Stapler.java:238)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:848)
    at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:686)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1494)
    at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:132)
    at hudson.util.PluginServletFilter.doFilter(PluginServletFilter.java:123)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1482)
    at hudson.security.csrf.CrumbFilter.doFilter(CrumbFilter.java:49)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1482)
    at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:84)
    at hudson.security.ChainedServletFilter.doFilter(ChainedServletFilter.java:76)
    at hudson.security.HudsonFilter.doFilter(HudsonFilter.java:171)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1482)
    at org.kohsuke.stapler.compression.CompressionFilter.doFilter(CompressionFilter.java:49)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1482)
    at hudson.util.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:81)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1482)
    at org.kohsuke.stapler.DiagnosticThreadNameFilter.doFilter(DiagnosticThreadNameFilter.java:30)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1474)
    at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:499)
    at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:137)
    at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:533)
    at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:231)
    at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1086)
    at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:428)
    at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:193)
    at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1020)
    at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:135)
    at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116)
    at org.eclipse.jetty.server.Server.handle(Server.java:370)
    at org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:489)
    at org.eclipse.jetty.server.AbstractHttpConnection.content(AbstractHttpConnection.java:960)
    at org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.content(AbstractHttpConnection.java:1021)
    at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:865)
    at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:240)
    at org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:82)
    at org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:668)
    at org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:52)
    at winstone.BoundedExecutorService$1.run(BoundedExecutorService.java:77)
    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)

Apr 22, 2016 12:05:21 PM INFO com.github.kostyasha.yad.DockerCloud provision
Asked to provision load: '1', for: 'docker-slave' label
Apr 22, 2016 12:05:21 PM INFO com.github.kostyasha.yad.DockerCloud provision
Will provision 'evarga/jenkins-slave', for label: 'docker-slave', in cloud: 'docker'
Apr 22, 2016 12:05:21 PM INFO com.github.kostyasha.yad.DockerCloud addProvisionedSlave
Provisioning 'evarga/jenkins-slave' number '0' on 'docker'; Total containers: '0'
Apr 22, 2016 12:05:21 PM INFO hudson.slaves.NodeProvisioner$StandardStrategyImpl apply
Started provisioning evarga/jenkins-slave from docker with 1 executors. Remaining excess workload: 0
Apr 22, 2016 12:05:21 PM INFO com.github.kostyasha.yad.DockerCloud provisionWithWait
Trying to run container for evarga/jenkins-slave

env variable DOCKER_XXX not available in pipeline script

pipeline script:

node("test") {
  stage 'execute robot test cases'
  sh "export"
  echo "${env.DOCKER_CONTAINER_ID}"
}

console output:

[Pipeline] sh
[abc] Running shell script
+ export
export BUILD_DISPLAY_NAME='#18'
export BUILD_ID='18'
export BUILD_NUMBER='18'
export BUILD_TAG='jenkins-abc-18'
export BUILD_URL='http://10.18.67.48:8000/job/abc/18/'
export EXECUTOR_NUMBER='0'
export HOME='/home/jenkins'
export HUDSON_COOKIE='4adaf6a1-1c7e-4c9d-86db-d5fb15ddac3f'
export HUDSON_HOME='/var/jenkins_home'
export HUDSON_SERVER_COOKIE='d3f1a8628256127e'
export HUDSON_URL='http://10.18.67.48:8000/'
export JENKINS_HOME='/var/jenkins_home'
export JENKINS_SERVER_COOKIE='durable-75856e1293359a7a00e531e58e5e39b6'
export JENKINS_URL='http://10.18.67.48:8000/'
export JOB_BASE_NAME='abc'
export JOB_NAME='abc'
export JOB_URL='http://10.18.67.48:8000/job/abc/'
export LANG='C.UTF-8'
export LANGUAGE='en_US:en'
export LC_ALL='C.UTF-8'
export LOGNAME='jenkins'
export MAIL='/var/mail/jenkins'
export NODE_NAME='RF-HOST1-26d4e0f2827d'
export OLDPWD='/home/jenkins'
export PATH='/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games'
export PWD='/home/jenkins/workspace/abc'
export SHELL='/bin/bash'
export SHLVL='1'
export SSH_CLIENT='172.17.0.1 50854 22'
export SSH_CONNECTION='172.17.0.1 50854 172.17.0.3 22'
export _='/usr/bin/java'
[Pipeline] echo
null
[Pipeline] }
[Pipeline] // node
[Pipeline] End of Pipeline

NPE in SslHandler.unwrap.

We have a docker host with our cutom images to spin up docker slaves. The docker host exposes its socket over TCP, protected by TLS.

Everything worked fine for us, but of of the sudded we started getting weird exceptions.

Nothing was changed at the docker host, and I could not find any changes in our Jenkins as well.

I was trying both 0.1.0-rc14 and 0.1.0-rc15 with the same result.

Here is the exception:

Aug 02, 2016 10:21:20 AM com.github.kostyasha.yad.DockerCloud lambda$provision$0
SEVERE: Error in provisioning; template='DockerSlaveTemplate[id=6079d8b2-e594-475b-bcb3-df9f42a5bd72,labelString=platfrom-c,launcher=com.github.kostyasha.yad.launcher.DockerComputerSSHLauncher@73b4411f,remoteFsMapping=,remoteFs=/home/jenkins,maxCapacity=1,mode=NORMAL,retentionStrategy=com.github.kostyasha.yad.strategy.DockerOnceRetentionStrategy@27f,numExecutors=1,dockerContainerLifecycle=com.github.kostyasha.yad.DockerContainerLifecycle@6e210a53[image=docker.apple.com/athena-c/centos7-clang:1.5.0,pullImage=com.github.kostyasha.yad.commons.DockerPullImage@953c5e6c,createContainer=DockerCreateContainer[command=,hostname=,dnsHosts=[],volumes=[],volumesFrom=[],environment=[],bindPorts=,bindAllPorts=false,memoryLimit=0,cpuShares=<null>,privileged=false,tty=false,macAddress=<null>,extraHosts=[],networkMode=<null>,devices=[],cpusetCpus=,cpusetMems=],stopContainer=com.github.kostyasha.yad.commons.DockerStopContainer@27f,removeContainer=com.github.kostyasha.yad.commons.DockerRemoveContainer@5b0f],nodeProperties=[]]' for cloud='athena11'
com.github.kostyasha.yad.docker_java.io.netty.handler.codec.DecoderException: java.lang.NullPointerException
        at com.github.kostyasha.yad.docker_java.io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:418)
        at com.github.kostyasha.yad.docker_java.io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:245)
        at com.github.kostyasha.yad.docker_java.io.netty.channel.ChannelHandlerInvokerUtil.invokeChannelReadNow(ChannelHandlerInvokerUtil.java:83)
        at com.github.kostyasha.yad.docker_java.io.netty.channel.DefaultChannelHandlerInvoker.invokeChannelRead(DefaultChannelHandlerInvoker.java:154)
        at com.github.kostyasha.yad.docker_java.io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:354)
        at com.github.kostyasha.yad.docker_java.io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:145)
        at com.github.kostyasha.yad.docker_java.io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:1078)
        at com.github.kostyasha.yad.docker_java.io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:125)
        at com.github.kostyasha.yad.docker_java.io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:510)
        at com.github.kostyasha.yad.docker_java.io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:467)
        at com.github.kostyasha.yad.docker_java.io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:381)
        at com.github.kostyasha.yad.docker_java.io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:353)
        at com.github.kostyasha.yad.docker_java.io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:742)
        at com.github.kostyasha.yad.docker_java.io.netty.util.concurrent.DefaultThreadFactory$DefaultRunnableDecorator.run(DefaultThreadFactory.java:137)
        at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.NullPointerException
        at java.lang.System.arraycopy(Native Method)
        at com.sun.crypto.provider.GCTR.reset(GCTR.java:125)
        at com.sun.crypto.provider.GCTR.doFinal(GCTR.java:116)
        at com.sun.crypto.provider.GaloisCounterMode.doLastBlock(GaloisCounterMode.java:343)
        at com.sun.crypto.provider.GaloisCounterMode.decryptFinal(GaloisCounterMode.java:511)
        at com.sun.crypto.provider.CipherCore.finalNoPadding(CipherCore.java:1023)
        at com.sun.crypto.provider.CipherCore.doFinal(CipherCore.java:960)
        at com.sun.crypto.provider.AESCipher.engineDoFinal(AESCipher.java:479)
        at javax.crypto.CipherSpi.bufferCrypt(CipherSpi.java:830)
        at javax.crypto.CipherSpi.engineDoFinal(CipherSpi.java:730)
        at javax.crypto.Cipher.doFinal(Cipher.java:2416)
        at sun.security.ssl.CipherBox.decrypt(CipherBox.java:535)
        at sun.security.ssl.EngineInputRecord.decrypt(EngineInputRecord.java:200)
        at sun.security.ssl.SSLEngineImpl.readRecord(SSLEngineImpl.java:968)
        at sun.security.ssl.SSLEngineImpl.readNetRecord(SSLEngineImpl.java:901)
        at sun.security.ssl.SSLEngineImpl.unwrap(SSLEngineImpl.java:775)
        at javax.net.ssl.SSLEngine.unwrap(SSLEngine.java:624)
        at com.github.kostyasha.yad.docker_java.io.netty.handler.ssl.SslHandler.unwrap(SslHandler.java:1080)
        at com.github.kostyasha.yad.docker_java.io.netty.handler.ssl.SslHandler.unwrap(SslHandler.java:958)
        at com.github.kostyasha.yad.docker_java.io.netty.handler.ssl.SslHandler.decode(SslHandler.java:895)
        at com.github.kostyasha.yad.docker_java.io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:387)
        ... 14 more

The weird thing is when I press Test connection in Jenkins I see the following in the docker log:

2016/08/02 13:39:46 http: TLS handshake error from 17.198.34.51:53559: tls: first record does not look like a TLS handshake

But we do use <tlsVerify>true</tlsVerify> in our configuration.
Cloud section of the Jenkins config: configOutput.xml.txt

Any ideas what's going on?

Support Docker Compose

Hi @KostyaSha,

thanks a lot for your work. We are pretty close to migrating from the original Docker Plugin to your YADP and waiting for the YADP to reach a stable release.

Unfortunately we currently have a quite big need to integrate Docker Compose within our Jenkins CI environment as we have to deploy into a container with an individual database container linked.
So could you please implement support for Docker Compose soon?

That would be awesome and make you my personal hero! :-)

Cheers,
Stefan

NullPointerException on provisioning

I get NullPointerException when start job that uses docker node.
Here com.github.kostyasha.yad log:

Sep 09, 2016 7:29:00 PM FINE com.github.kostyasha.yad.DockerProvisioningStrategy apply
Applying provisioning.
Sep 09, 2016 7:29:00 PM FINE com.github.kostyasha.yad.DockerProvisioningStrategy apply
Available capacity=0, currentDemand=1
Sep 09, 2016 7:29:00 PM INFO com.github.kostyasha.yad.DockerCloud provision
Asked to provision load: '1', for: 'centos7amd64docker' label
Sep 09, 2016 7:29:00 PM INFO com.github.kostyasha.yad.DockerCloud provision
Will provision 'centos-7', for label: 'centos7amd64docker', in cloud: 'dockerserver1'
Sep 09, 2016 7:29:00 PM FINE com.github.kostyasha.yad.client.ClientBuilderForConnector forConnector
Building connection to docker host 'tcp://172.31.240.69:4243'
Sep 09, 2016 7:29:00 PM INFO com.github.kostyasha.yad.DockerCloud addProvisionedSlave
Provisioning 'centos-7' number '0' on 'dockerserver1'; Total containers: '0'
Sep 09, 2016 7:29:00 PM FINE com.github.kostyasha.yad.DockerProvisioningStrategy apply
Planned 1 new nodes
Sep 09, 2016 7:29:00 PM FINE com.github.kostyasha.yad.DockerProvisioningStrategy apply
After 'com.github.kostyasha.yad.DockerCloud@1e0dda3[connector=com.github.kostyasha.yad.DockerConnector@2bdd614,provisionedImages={DockerSlaveTemplate[id=5a750a0a-5978-46e0-ac21-7d78d6e34648,labelString=centos7amd64docker,launcher=com.github.kostyasha.yad.launcher.DockerComputerJNLPLauncher@e8afc896,remoteFs=/root/,maxCapacity=2,mode=EXCLUSIVE,retentionStrategy=com.github.kostyasha.yad.strategy.DockerOnceRetentionStrategy@27f,numExecutors=1,dockerContainerLifecycle=com.github.kostyasha.yad.DockerContainerLifecycle@aa0178b[image=centos-7,pullImage=com.github.kostyasha.yad.commons.DockerPullImage@6bab9498,createContainer=DockerCreateContainer[command=,hostname=,dnsHosts=[],volumes=[],volumesFrom=[],environment=[],bindPorts=,bindAllPorts=true,memoryLimit=0,cpuShares=<null>,privileged=false,tty=false,macAddress=<null>,extraHosts=[],networkMode=<null>,devices=[],cpusetCpus=,cpusetMems=],stopContainer=com.github.kostyasha.yad.commons.DockerStopContainer@27f,removeContainer=com.github.kostyasha.yad.commons.DockerRemoveContainer@5b0f],nodeProperties=[]]=1},templates=[DockerSlaveTemplate[id=5a750a0a-5978-46e0-ac21-7d78d6e34648,labelString=centos7amd64docker,launcher=com.github.kostyasha.yad.launcher.DockerComputerJNLPLauncher@e8afc896,remoteFs=/root/,maxCapacity=2,mode=EXCLUSIVE,retentionStrategy=com.github.kostyasha.yad.strategy.DockerOnceRetentionStrategy@27f,numExecutors=1,dockerContainerLifecycle=com.github.kostyasha.yad.DockerContainerLifecycle@aa0178b[image=centos-7,pullImage=com.github.kostyasha.yad.commons.DockerPullImage@6bab9498,createContainer=DockerCreateContainer[command=,hostname=,dnsHosts=[],volumes=[],volumesFrom=[],environment=[],bindPorts=,bindAllPorts=true,memoryLimit=0,cpuShares=<null>,privileged=false,tty=false,macAddress=<null>,extraHosts=[],networkMode=<null>,devices=[],cpusetCpus=,cpusetMems=],stopContainer=com.github.kostyasha.yad.commons.DockerStopContainer@27f,removeContainer=com.github.kostyasha.yad.commons.DockerRemoveContainer@5b0f],nodeProperties=[]]],containerCap=50,name=dockerserver1]' provisioning, available capacity=1, currentDemand=1
Sep 09, 2016 7:29:00 PM FINE com.github.kostyasha.yad.DockerProvisioningStrategy apply
Provisioning completed
Sep 09, 2016 7:29:00 PM INFO com.github.kostyasha.yad.DockerCloud provisionWithWait
Trying to run container for centos-7
Sep 09, 2016 7:29:00 PM FINE com.github.kostyasha.yad.DockerCloud runContainer
Created container 575de1307d0cf636f375107860807c4678028f041930a0644760c57ab70ff50a, for dockerserver1
Sep 09, 2016 7:29:00 PM FINE com.github.kostyasha.yad.DockerCloud runContainer
Run container 575de1307d0cf636f375107860807c4678028f041930a0644760c57ab70ff50a, for dockerserver1
Sep 09, 2016 7:29:00 PM FINE com.github.kostyasha.yad.DockerCloud provisionWithWait
Container 575de1307d0cf636f375107860807c4678028f041930a0644760c57ab70ff50a is ready for ssh slave connection
Sep 09, 2016 7:29:00 PM SEVERE com.github.kostyasha.yad.DockerCloud lambda$provision$0
Error in provisioning; template='DockerSlaveTemplate[id=5a750a0a-5978-46e0-ac21-7d78d6e34648,labelString=centos7amd64docker,launcher=com.github.kostyasha.yad.launcher.DockerComputerJNLPLauncher@e8afc896,remoteFs=/root/,maxCapacity=2,mode=EXCLUSIVE,retentionStrategy=com.github.kostyasha.yad.strategy.DockerOnceRetentionStrategy@27f,numExecutors=1,dockerContainerLifecycle=com.github.kostyasha.yad.DockerContainerLifecycle@aa0178b[image=centos-7,pullImage=com.github.kostyasha.yad.commons.DockerPullImage@6bab9498,createContainer=DockerCreateContainer[command=,hostname=,dnsHosts=[],volumes=[],volumesFrom=[],environment=[],bindPorts=,bindAllPorts=true,memoryLimit=0,cpuShares=<null>,privileged=false,tty=false,macAddress=<null>,extraHosts=[],networkMode=<null>,devices=[],cpusetCpus=,cpusetMems=],stopContainer=com.github.kostyasha.yad.commons.DockerStopContainer@27f,removeContainer=com.github.kostyasha.yad.commons.DockerRemoveContainer@5b0f],nodeProperties=[]]' for cloud='dockerserver1'
java.lang.NullPointerException
    at java.util.TreeMap.getEntry(TreeMap.java:347)
    at java.util.TreeMap.containsKey(TreeMap.java:232)
    at jenkinsci.plugin.browseraxis.label.BrowserFinder.checkNodes(BrowserFinder.java:44)
    at jenkinsci.plugin.browseraxis.label.BrowserFinder.findLabels(BrowserFinder.java:72)
    at hudson.model.Node.getDynamicLabels(Node.java:309)
    at hudson.model.Node.getAssignedLabels(Node.java:294)
    at hudson.model.Slave.<init>(Slave.java:185)
    at hudson.slaves.AbstractCloudSlave.<init>(AbstractCloudSlave.java:51)
    at com.github.kostyasha.yad.DockerSlave.<init>(DockerSlave.java:58)
    at com.github.kostyasha.yad.DockerCloud.provisionWithWait(DockerCloud.java:227)
    at com.github.kostyasha.yad.DockerCloud.lambda$provision$0(DockerCloud.java:120)
    at jenkins.util.ContextResettingExecutorService$2.call(ContextResettingExecutorService.java:46)
    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)

Specifying links under "Create Container Settings"?

Is there a way to specify links to other containers (docker create --link value1 --link value2 ...) when creating the container to be used by YADP (0.1.0-rc24)? My created container needs access to another docker container's hostname.

Is there a way to use the Docker Command field to specify arbitrary arguments? (I wasn't clear what this field is used for; I didn't understand the help text referring to Jenkins Launchers). Unless this refers to the command run in the created container, in which case this isn't relevant.

Maybe instead of looking for links, I can achieve the same thing using a shared docker network with service discovery.

Thanks!

unix:/// results into stacktrace

Jenkins docker-image jenkinci/jenkins:2.9
Plugin version: 0.1.0-rc14
Docker version 1.12.0-rc2-beta16
connectionstring: unix:///var/run/docker.sock (which worked in the other plugin ;-) )

javax.servlet.ServletException: java.lang.NoClassDefFoundError: io/netty/channel/epoll/NativeStaticallyReferencedJniMethods
    at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:796)
    at org.kohsuke.stapler.Stapler.invoke(Stapler.java:876)
    at org.kohsuke.stapler.MetaClass$5.doDispatch(MetaClass.java:233)
    at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:58)
    at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:746)
    at org.kohsuke.stapler.Stapler.invoke(Stapler.java:876)
    at org.kohsuke.stapler.Stapler.invoke(Stapler.java:649)
    at org.kohsuke.stapler.Stapler.service(Stapler.java:238)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
    at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:812)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1669)
    at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:135)
    at hudson.plugins.greenballs.GreenBallFilter.doFilter(GreenBallFilter.java:59)
    at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:132)
    at hudson.util.PluginServletFilter.doFilter(PluginServletFilter.java:126)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)
    at hudson.security.csrf.CrumbFilter.doFilter(CrumbFilter.java:49)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)
    at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:84)
    at hudson.security.ChainedServletFilter.doFilter(ChainedServletFilter.java:76)
    at hudson.security.HudsonFilter.doFilter(HudsonFilter.java:171)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)
    at org.kohsuke.stapler.compression.CompressionFilter.doFilter(CompressionFilter.java:49)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)
    at hudson.util.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:82)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)
    at org.kohsuke.stapler.DiagnosticThreadNameFilter.doFilter(DiagnosticThreadNameFilter.java:30)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)
    at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:585)
    at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)
    at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:553)
    at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:223)
    at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1127)
    at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:515)
    at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)
    at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1061)
    at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
    at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97)
    at org.eclipse.jetty.server.Server.handle(Server.java:499)
    at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:311)
    at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:257)
    at org.eclipse.jetty.io.AbstractConnection$2.run(AbstractConnection.java:544)
    at winstone.BoundedExecutorService$1.run(BoundedExecutorService.java:77)
    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)
Caused by: java.lang.NoClassDefFoundError: io/netty/channel/epoll/NativeStaticallyReferencedJniMethods
    at java.lang.ClassLoader$NativeLibrary.load(Native Method)
    at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1941)
    at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1824)
    at java.lang.Runtime.load0(Runtime.java:809)
    at java.lang.System.load(System.java:1086)
    at com.github.kostyasha.yad.docker_java.io.netty.util.internal.NativeLibraryLoader.load(NativeLibraryLoader.java:193)
    at com.github.kostyasha.yad.docker_java.io.netty.channel.epoll.Native.<clinit>(Native.java:60)
    at com.github.kostyasha.yad.docker_java.io.netty.channel.epoll.IovArray.<clinit>(IovArray.java:57)
    at com.github.kostyasha.yad.docker_java.io.netty.channel.epoll.EpollEventLoop.<init>(EpollEventLoop.java:57)
    at com.github.kostyasha.yad.docker_java.io.netty.channel.epoll.EpollEventLoopGroup.newChild(EpollEventLoopGroup.java:78)
    at com.github.kostyasha.yad.docker_java.io.netty.channel.epoll.EpollEventLoopGroup.newChild(EpollEventLoopGroup.java:30)
    at com.github.kostyasha.yad.docker_java.io.netty.util.concurrent.MultithreadEventExecutorGroup.<init>(MultithreadEventExecutorGroup.java:77)
    at com.github.kostyasha.yad.docker_java.io.netty.util.concurrent.MultithreadEventExecutorGroup.<init>(MultithreadEventExecutorGroup.java:48)
    at com.github.kostyasha.yad.docker_java.io.netty.channel.MultithreadEventLoopGroup.<init>(MultithreadEventLoopGroup.java:57)
    at com.github.kostyasha.yad.docker_java.io.netty.channel.epoll.EpollEventLoopGroup.<init>(EpollEventLoopGroup.java:63)
    at com.github.kostyasha.yad.docker_java.io.netty.channel.epoll.EpollEventLoopGroup.<init>(EpollEventLoopGroup.java:51)
    at com.github.kostyasha.yad.docker_java.com.github.dockerjava.netty.DockerCmdExecFactoryImpl$UnixDomainSocketInitializer.init(DockerCmdExecFactoryImpl.java:218)
    at com.github.kostyasha.yad.docker_java.com.github.dockerjava.netty.DockerCmdExecFactoryImpl.init(DockerCmdExecFactoryImpl.java:194)
    at com.github.kostyasha.yad.docker_java.com.github.dockerjava.core.DockerClientImpl.withDockerCmdExecFactory(DockerClientImpl.java:159)
    at com.github.kostyasha.yad.client.ClientBuilderForConnector.build(ClientBuilderForConnector.java:163)
    at com.github.kostyasha.yad.DockerConnector$DescriptorImpl.doTestConnection(DockerConnector.java:196)
    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.kohsuke.stapler.Function$InstanceFunction.invoke(Function.java:324)
    at org.kohsuke.stapler.Function.bindAndInvoke(Function.java:167)
    at org.kohsuke.stapler.Function.bindAndInvokeAndServeResponse(Function.java:100)
    at org.kohsuke.stapler.MetaClass$1.doDispatch(MetaClass.java:124)
    at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:58)
    at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:746)
    ... 45 more
Caused by: java.lang.ClassNotFoundException: io.netty.channel.epoll.NativeStaticallyReferencedJniMethods
    at jenkins.util.AntClassLoader.findClassInComponents(AntClassLoader.java:1376)
    at jenkins.util.AntClassLoader.findClass(AntClassLoader.java:1326)
    at jenkins.util.AntClassLoader.loadClass(AntClassLoader.java:1079)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    ... 76 more

Feature request: Container settings... --devices

Would it be possible to extend "Container settings..." with a field users can specify the docker run --device=[] parameter?

The input field should probably be a string that the user can provide input in the form of "/dev/sda:/dev/xvdc:r"

I have a workaround right now in the form of running my containers as privileged, which exposes all devices in the system but also lowers container security.

DockerCloudRetentionStrategy regression: Executors are added but never launched

After upgrading to rc27 yesterday, our builds are hanging while waiting for swarm nodes to start. I can see the containers being created and added to jenkins as executors, but they don't appear to be automatically launched. By clicking Launch agent manually, the connection succeeds and the build is able to proceed.

Container Startup Log:

Oct 18, 2016 10:50:17 AM com.github.kostyasha.yad.DockerCloud provision
INFO: Asked to provision load: '1', for: 'centos-java-7-swarm-slave' label
Oct 18, 2016 10:50:17 AM com.github.kostyasha.yad.DockerCloud provision
INFO: Will provision 'gishiqaqgw03.dub.usoh.ibm.com:5002/centos-jenkins-slave-timezone', for label: 'centos-java-7-swarm-slave', in cloud: 'Docker-Swarm'
Oct 18, 2016 10:50:17 AM com.github.kostyasha.yad.DockerCloud addProvisionedSlave
INFO: Provisioning 'gishiqaqgw03.dub.usoh.ibm.com:5002/centos-jenkins-slave-timezone' number '10' on 'Docker-Swarm'; Total containers: '10'
Oct 18, 2016 10:50:17 AM hudson.slaves.NodeProvisioner$StandardStrategyImpl apply
INFO: Started provisioning gishiqaqgw03.dub.usoh.ibm.com:5002/centos-jenkins-slave-timezone from Docker-Swarm with 1 executors. Remaining excess workload: 0
Oct 18, 2016 10:50:17 AM com.github.kostyasha.yad.DockerCloud provisionWithWait
INFO: Trying to run container for gishiqaqgw03.dub.usoh.ibm.com:5002/centos-jenkins-slave-timezone
Oct 18, 2016 10:50:20 AM com.github.kostyasha.yad.utils.HostAndPortChecker bySshWithEveryRetryWaitFor
INFO: SSH port is open on 9.55.37.41:37396
Oct 18, 2016 10:50:20 AM com.github.kostyasha.yad.launcher.DockerComputerSSHLauncher getSSHLauncher
INFO: Creating slave SSH launcher for '9.55.37.41:37396'
Oct 18, 2016 10:50:23 AM hudson.slaves.NodeProvisioner$2 run
INFO: gishiqaqgw03.dub.usoh.ibm.com:5002/centos-jenkins-slave-timezone provisioning successfully completed. We have now 11 computer(s)

Container Shutdown Log:

Oct 18, 2016 10:50:17 AM com.github.kostyasha.yad.DockerCloud provision
INFO: Asked to provision load: '1', for: 'centos-java-7-swarm-slave' label
Oct 18, 2016 10:50:17 AM com.github.kostyasha.yad.DockerCloud provision
INFO: Will provision 'gishiqaqgw03.dub.usoh.ibm.com:5002/centos-jenkins-slave-timezone', for label: 'centos-java-7-swarm-slave', in cloud: 'Docker-Swarm'
Oct 18, 2016 10:50:17 AM com.github.kostyasha.yad.DockerCloud addProvisionedSlave
INFO: Provisioning 'gishiqaqgw03.dub.usoh.ibm.com:5002/centos-jenkins-slave-timezone' number '10' on 'Docker-Swarm'; Total containers: '10'
Oct 18, 2016 10:50:17 AM hudson.slaves.NodeProvisioner$StandardStrategyImpl apply
INFO: Started provisioning gishiqaqgw03.dub.usoh.ibm.com:5002/centos-jenkins-slave-timezone from Docker-Swarm with 1 executors. Remaining excess workload: 0
Oct 18, 2016 10:50:17 AM com.github.kostyasha.yad.DockerCloud provisionWithWait
INFO: Trying to run container for gishiqaqgw03.dub.usoh.ibm.com:5002/centos-jenkins-slave-timezone
Oct 18, 2016 10:50:20 AM com.github.kostyasha.yad.utils.HostAndPortChecker bySshWithEveryRetryWaitFor
INFO: SSH port is open on 9.55.37.41:37396
Oct 18, 2016 10:50:20 AM com.github.kostyasha.yad.launcher.DockerComputerSSHLauncher getSSHLauncher
INFO: Creating slave SSH launcher for '9.55.37.41:37396'
Oct 18, 2016 10:50:23 AM hudson.slaves.NodeProvisioner$2 run
INFO: gishiqaqgw03.dub.usoh.ibm.com:5002/centos-jenkins-slave-timezone provisioning successfully completed. We have now 11 computer(s)

Container Launch Log: (After triggering manually)

[10/18/16 11:08:44] [SSH] Opening SSH connection to 9.55.37.42:36354.
[10/18/16 11:08:44] [SSH] Authentication successful.
[10/18/16 11:08:44] [SSH] The remote users environment is:
BASH=/usr/bin/bash
BASHOPTS=cmdhist:extquote:force_fignore:hostcomplete:interactive_comments:progcomp:promptvars:sourcepath
BASH_ALIASES=()
BASH_ARGC=()
BASH_ARGV=()
BASH_CMDS=()
BASH_EXECUTION_STRING=set
BASH_LINENO=()
BASH_SOURCE=()
BASH_VERSINFO=([0]="4" [1]="2" [2]="46" [3]="1" [4]="release" [5]="x86_64-redhat-linux-gnu")
BASH_VERSION='4.2.46(1)-release'
DIRSTACK=()
EUID=1000
GROUPS=()
HOME=/home/jenkins
HOSTNAME=2151c8ae051b
HOSTTYPE=x86_64
IFS=$' \t\n'
LESSOPEN='||/usr/bin/lesspipe.sh %s'
LOGNAME=jenkins
MACHTYPE=x86_64-redhat-linux-gnu
MAIL=/var/mail/jenkins
OPTERR=1
OPTIND=1
OSTYPE=linux-gnu
PATH=/usr/local/bin:/usr/bin
PIPESTATUS=([0]="0")
PPID=15
PS4='+ '
PWD=/home/jenkins
SHELL=/bin/bash
SHELLOPTS=braceexpand:hashall:interactive-comments
SHLVL=1
SSH_CLIENT='9.55.53.155 57003 22'
SSH_CONNECTION='9.55.53.155 57003 172.17.0.4 22'
TERM=dumb
UID=1000
USER=jenkins
_=/etc/bashrc
[10/18/16 11:08:44] [SSH] Checking java version of java
[10/18/16 11:08:45] [SSH] java -version returned 1.7.0.
[10/18/16 11:08:45] [SSH] Starting sftp client.
[10/18/16 11:08:46] [SSH] Copying latest slave.jar...
[10/18/16 11:08:46] [SSH] Copied 535,167 bytes.
Expanded the channel window size to 4MB
[10/18/16 11:08:46] [SSH] Starting slave process: cd "/home/jenkins" && java  -jar slave.jar
<===[JENKINS REMOTING CAPACITY]===>channel started
Slave.jar version: 2.62
This is a Unix agent
Evacuated stdout
Agent successfully connected and online

config.xml (Just the clouds section)

<clouds>
  <com.github.kostyasha.yad.DockerCloud plugin="[email protected]">
    <name>Docker-Swarm</name>
    <provisionedImages/>
    <templates>
      <com.github.kostyasha.yad.DockerSlaveTemplate>
        <id>9c7462a0-5f1e-4bab-913e-3706d0081998</id>
        <labelString>centos-java-7-swarm-slave</labelString>
        <launcher class="com.github.kostyasha.yad.launcher.DockerComputerSSHLauncher">
          <sshConnector plugin="[email protected]">
            <port>22</port>
            <credentialsId>ssh</credentialsId>
            <jvmOptions/>
            <javaPath/>
            <maxNumRetries>0</maxNumRetries>
            <retryWaitTime>0</retryWaitTime>
          </sshConnector>
        </launcher>
        <remoteFs>/home/jenkins</remoteFs>
        <maxCapacity>50</maxCapacity>
        <mode>NORMAL</mode>
        <retentionStrategy class="com.github.kostyasha.yad.strategy.DockerCloudRetentionStrategy">
          <idleMinutes>1</idleMinutes>
        </retentionStrategy>
        <numExecutors>1</numExecutors>
        <dockerContainerLifecycle>
          <image>gishiqaqgw03.dub.usoh.ibm.com:5002/centos-jenkins-slave-timezone</image>
          <pullImage>
            <pullStrategy>PULL_LATEST</pullStrategy>
            <credentialsId/>
          </pullImage>
          <createContainer>
            <command/>
            <hostname/>
            <dnsHosts class="java.util.Collections$UnmodifiableRandomAccessList" resolves-to="java.util.Collections$UnmodifiableList">
              <c class="list"/>
              <list reference="../c"/>
            </dnsHosts>
            <volumes class="java.util.Collections$UnmodifiableRandomAccessList" resolves-to="java.util.Collections$UnmodifiableList">
              <c class="list"/>
              <list reference="../c"/>
            </volumes>
            <volumesFrom class="java.util.Collections$UnmodifiableRandomAccessList" resolves-to="java.util.Collections$UnmodifiableList">
              <c class="list"/>
              <list reference="../c"/>
            </volumesFrom>
            <environment class="java.util.Collections$UnmodifiableRandomAccessList" resolves-to="java.util.Collections$UnmodifiableList">
              <c class="list"/>
              <list reference="../c"/>
            </environment>
            <bindPorts/>
            <bindAllPorts>false</bindAllPorts>
            <memoryLimit>0</memoryLimit>
            <privileged>false</privileged>
            <tty>false</tty>
            <extraHosts class="java.util.Collections$UnmodifiableRandomAccessList" resolves-to="java.util.Collections$UnmodifiableList">
              <c class="list"/>
              <list reference="../c"/>
            </extraHosts>
            <devices class="java.util.Collections$UnmodifiableRandomAccessList" resolves-to="java.util.Collections$UnmodifiableList">
              <c class="list"/>
              <list reference="../c"/>
            </devices>
            <cpusetCpus/>
            <cpusetMems/>
            <links class="java.util.Collections$UnmodifiableRandomAccessList" resolves-to="java.util.Collections$UnmodifiableList">
              <c class="list"/>
              <list reference="../c"/>
            </links>
          </createContainer>
          <stopContainer>
            <timeout>20</timeout>
          </stopContainer>
          <removeContainer>
            <removeVolumes>true</removeVolumes>
            <force>false</force>
          </removeContainer>
        </dockerContainerLifecycle>
        <nodeProperties>
          <hudson.slaves.EnvironmentVariablesNodeProperty>
            <envVars serialization="custom">
              <unserializable-parents/>
              <tree-map>
                <default>
                  <comparator class="hudson.util.CaseInsensitiveComparator"/>
                </default>
                <int>3</int>
                <string>JAVA_HOME</string>
                <string>/usr/local/src/ibm-java-x86_64-71</string>
                <string>M2</string>
                <string>/usr/local/src/apache-maven-3.1.0</string>
                <string>MAVEN_HOME</string>
                <string>/usr/local/src/apache-maven-3.1.0</string>
              </tree-map>
            </envVars>
          </hudson.slaves.EnvironmentVariablesNodeProperty>
        </nodeProperties>
      </com.github.kostyasha.yad.DockerSlaveTemplate>
      <com.github.kostyasha.yad.DockerSlaveTemplate>
        <id>963a39e8-6305-4283-be7d-0fc497d43fa3</id>
        <labelString>centos-docker-swarm-slave</labelString>
        <launcher class="com.github.kostyasha.yad.launcher.DockerComputerSSHLauncher">
          <sshConnector plugin="[email protected]">
            <port>22</port>
            <credentialsId>ssh</credentialsId>
            <jvmOptions/>
            <javaPath/>
            <maxNumRetries>0</maxNumRetries>
            <retryWaitTime>0</retryWaitTime>
          </sshConnector>
        </launcher>
        <remoteFs>/home/jenkins</remoteFs>
        <maxCapacity>10</maxCapacity>
        <mode>EXCLUSIVE</mode>
        <retentionStrategy class="com.github.kostyasha.yad.strategy.DockerOnceRetentionStrategy">
          <idleMinutes>10</idleMinutes>
          <idleMinutes defined-in="com.github.kostyasha.yad.strategy.DockerOnceRetentionStrategy">10</idleMinutes>
        </retentionStrategy>
        <numExecutors>1</numExecutors>
        <dockerContainerLifecycle>
          <image>gishiqaqgw03.dub.usoh.ibm.com:5002/centos-jenkins-slave-docker</image>
          <pullImage>
            <pullStrategy>PULL_LATEST</pullStrategy>
            <credentialsId/>
          </pullImage>
          <createContainer>
            <command>bash -c '/start.sh'</command>
            <hostname/>
            <dnsHosts class="java.util.Collections$UnmodifiableRandomAccessList" resolves-to="java.util.Collections$UnmodifiableList">
              <c class="list"/>
              <list reference="../c"/>
            </dnsHosts>
            <volumes class="java.util.Collections$UnmodifiableRandomAccessList" resolves-to="java.util.Collections$UnmodifiableList">
              <c class="list"/>
              <list reference="../c"/>
            </volumes>
            <volumesFrom class="java.util.Collections$UnmodifiableRandomAccessList" resolves-to="java.util.Collections$UnmodifiableList">
              <c class="list"/>
              <list reference="../c"/>
            </volumesFrom>
            <environment class="java.util.Collections$UnmodifiableRandomAccessList" resolves-to="java.util.Collections$UnmodifiableList">
              <c class="list"/>
              <list reference="../c"/>
            </environment>
            <bindPorts/>
            <bindAllPorts>false</bindAllPorts>
            <memoryLimit>0</memoryLimit>
            <privileged>true</privileged>
            <tty>false</tty>
            <extraHosts class="java.util.Collections$UnmodifiableRandomAccessList" resolves-to="java.util.Collections$UnmodifiableList">
              <c class="list"/>
              <list reference="../c"/>
            </extraHosts>
            <devices class="java.util.Collections$UnmodifiableRandomAccessList" resolves-to="java.util.Collections$UnmodifiableList">
              <c class="list"/>
              <list reference="../c"/>
            </devices>
            <cpusetCpus/>
            <cpusetMems/>
            <links class="java.util.Collections$UnmodifiableRandomAccessList" resolves-to="java.util.Collections$UnmodifiableList">
              <c class="list"/>
              <list reference="../c"/>
            </links>
          </createContainer>
          <stopContainer>
            <timeout>10</timeout>
          </stopContainer>
          <removeContainer>
            <removeVolumes>true</removeVolumes>
            <force>false</force>
          </removeContainer>
        </dockerContainerLifecycle>
        <nodeProperties/>
      </com.github.kostyasha.yad.DockerSlaveTemplate>
    </templates>
    <containerCap>50</containerCap>
    <connector>
      <serverUrl>tcp://gishiqaqgw04.dub.usoh.ibm.com:4000</serverUrl>
      <apiVersion>1.22</apiVersion>
      <credentialsId>9e8c8c0d-fd6d-41c0-9101-9c63cca16706</credentialsId>
      <connectorType>JERSEY</connectorType>
    </connector>
  </com.github.kostyasha.yad.DockerCloud>
</clouds>

Please let me know if there is any additional information I can provide.

Remote FS Root Mapping problem

Hello,

So every time I set a value for Remote FS Root Mapping in the Global settings then save it and then go back to the page it goes back to being empty!

And it doesn't even show up in the config.xml:

<com.github.kostyasha.yad.DockerSlaveTemplate>
  <id>aa35a978-7868-4ea5-b689-f8bdc0515b79</id>
  <labelString>jdk8-maven3</labelString>
  <launcher class="com.github.kostyasha.yad.launcher.DockerComputerSSHLauncher">
    <sshConnector plugin="[email protected]">
      <port>22</port>
      <credentialsId>75b007ba-5f38-4ce3-9eef-92101e286734</credentialsId>
      <jvmOptions></jvmOptions>
      <javaPath></javaPath>
      <maxNumRetries>0</maxNumRetries>
      <retryWaitTime>0</retryWaitTime>
    </sshConnector>
  </launcher>
  <remoteFs>/var/lib/jenkins</remoteFs>
  <maxCapacity>25</maxCapacity>
  <mode>EXCLUSIVE</mode>
  <retentionStrategy class="com.github.kostyasha.yad.strategy.DockerOnceRetentionStrategy">
    <idleMinutes>10</idleMinutes>
    <idleMinutes defined-in="com.github.kostyasha.yad.strategy.DockerOnceRetentionStrategy">10</idleMinutes>
  </retentionStrategy>
  <numExecutors>1</numExecutors>
  <dockerContainerLifecycle>
    <image>AWSID.dkr.ecr.us-east-1.amazonaws.com/jenkins-slave:jdk8-maven3-2.2</image>
    <pullImage>
      <pullStrategy>PULL_NEVER</pullStrategy>
      <credentialsId></credentialsId>
    </pullImage>
    <createContainer>
      <command></command>
      <hostname></hostname>
      <dnsHosts class="java.util.Collections$UnmodifiableRandomAccessList" resolves-to="java.util.Collections$UnmodifiableList">
        <c class="list"/>
        <list reference="../c"/>
      </dnsHosts>
      <volumes class="java.util.Collections$UnmodifiableRandomAccessList" resolves-to="java.util.Collections$UnmodifiableList">
        <c class="list">
          <string>/var/lib/jenkins:/var/lib/jenkins</string>
        </c>
        <list reference="../c"/>
      </volumes>
      <volumesFrom class="java.util.Collections$UnmodifiableRandomAccessList" resolves-to="java.util.Collections$UnmodifiableList">
        <c class="list"/>
        <list reference="../c"/>
      </volumesFrom>
      <environment class="java.util.Collections$UnmodifiableRandomAccessList" resolves-to="java.util.Collections$UnmodifiableList">
        <c class="list"/>
        <list reference="../c"/>
      </environment>
      <bindPorts></bindPorts>
      <bindAllPorts>true</bindAllPorts>
      <memoryLimit>2000</memoryLimit>
      <privileged>false</privileged>
      <tty>false</tty>
      <extraHosts class="java.util.Collections$UnmodifiableRandomAccessList" resolves-to="java.util.Collections$UnmodifiableList">
        <c class="list"/>
        <list reference="../c"/>
      </extraHosts>
      <devices class="java.util.Collections$UnmodifiableRandomAccessList" resolves-to="java.util.Collections$UnmodifiableList">
        <c class="list"/>
        <list reference="../c"/>
      </devices>
      <cpusetCpus></cpusetCpus>
      <cpusetMems></cpusetMems>
    </createContainer>
    <stopContainer>
      <timeout>10</timeout>
    </stopContainer>
    <removeContainer>
      <removeVolumes>false</removeVolumes>
      <force>false</force>
    </removeContainer>
  </dockerContainerLifecycle>
  <nodeProperties/>
</com.github.kostyasha.yad.DockerSlaveTemplate>

Which then results in Error: no workspace:

screen shot 2016-09-06 at 10 59 22 am

There are no relevant logs about this particular issue (so I couldn't debug), and also this was working just fine with the other docker-plugin.

Error in provisioning: NullPointerException

I'm trying to run a Docker container with SSH on localhost.

When running a job which matches the labels and Jenkins tries to start the container, I get the following errors in the log:

INFO: Trying to run container for myregistry.com/mycontainer
Jun 05, 2016 3:07:38 PM com.github.kostyasha.yad.DockerCloud lambda$provision$0
SEVERE: Error in provisioning; template='com.github.kostyasha.yad.DockerSlaveTemplate@1243d31a[dockerContainerLifecycle=com.github.kostyasha.yad.DockerContainerLifecycle@f3d2d3fb,id=39f91140-a61b-4a6f-ac97-6db0f8990922,labelString=generic container privileged docker,launcher=com.github.kostyasha.yad.launcher.DockerComputerSSHLauncher@5a03e1bc,remoteFsMapping=,remoteFs=/home/jenkins,maxCapacity=10,mode=EXCLUSIVE,retentionStrategy=com.github.kostyasha.yad.strategy.DockerOnceRetentionStrategy@27f,numExecutors=1,nodeProperties=[]]' for cloud='Localhost'
java.lang.NullPointerException
        at com.github.kostyasha.yad.launcher.DockerComputerSSHLauncher.getHostAndPort(DockerComputerSSHLauncher.java:122)
        at com.github.kostyasha.yad.launcher.DockerComputerSSHLauncher.waitUp(DockerComputerSSHLauncher.java:81)
        at com.github.kostyasha.yad.DockerCloud.provisionWithWait(DockerCloud.java:216)
        at com.github.kostyasha.yad.DockerCloud.lambda$provision$0(DockerCloud.java:117)
        at jenkins.util.ContextResettingExecutorService$2.call(ContextResettingExecutorService.java:46)
        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)

Jun 05, 2016 3:07:43 PM hudson.slaves.NodeProvisioner$2 run
WARNING: Provisioned agent myregistry.com/mycontainer failed to launch
java.lang.NullPointerException
        at com.github.kostyasha.yad.launcher.DockerComputerSSHLauncher.getHostAndPort(DockerComputerSSHLauncher.java:122)
        at com.github.kostyasha.yad.launcher.DockerComputerSSHLauncher.waitUp(DockerComputerSSHLauncher.java:81)
        at com.github.kostyasha.yad.DockerCloud.provisionWithWait(DockerCloud.java:216)
        at com.github.kostyasha.yad.DockerCloud.lambda$provision$0(DockerCloud.java:117)
        at jenkins.util.ContextResettingExecutorService$2.call(ContextResettingExecutorService.java:46)
        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)

No container is started and the job is not run. Instead, yad is trying to launch the container over and over again.

Output of docker daemon -l debug:

DEBU[1019] Calling GET /containers/json?all=0&size=0
DEBU[1019] Calling GET /containers/json?all=0&size=0
DEBU[1019] Calling GET /images/json?all=0
DEBU[1019] Calling POST /containers/create
DEBU[1019] form data: {"AttachStderr":false,"AttachStdin":false,"AttachStdout":false,"BlkioWeight":null,"Cmd":["bash","-c","/usr/sbin/sshd -D -p 22"],"CpuPeriod":null,"CpuShares":0,"Cpuset":null,"CpusetMems":null,"Domainname":"","Entrypoint":null,"Env":null,"ExposedPorts":{},"HostConfig":{"Binds":null,"CapAdd":null,"CapDrop":null,"ContainerIDFile":null,"CpuShares":0,"Devices":null,"Dns":null,"DnsSearch":null,"ExtraHosts":null,"Links":null,"LogConfig":null,"LxcConf":null,"Memory":0,"MemorySwap":0,"NetworkMode":null,"PidMode":null,"PortBindings":{"22/tcp":[{"HostIp":"0.0.0.0","HostPort":""}]},"Privileged":true,"PublishAllPorts":false,"ReadonlyRootfs":false,"RestartPolicy":null,"Ulimits":null,"VolumesFrom":null},"Hostname":"","Image":"myregistry.com/myimage","Labels":{"com.github.kostyasha.yad.DockerCloud":"Localhost","com.github.kostyasha.yad.DockerSlave":"39f91140-a61b-4a6f-ac97-6db0f8990922"},"MacAddress":null,"Memory":0,"MemorySwap":0,"NetworkDisabled":false,"OomKillDisable":null,"OpenStdin":false,"PortSpecs":["22/tcp"],"StdinOnce":false,"Tty":false,"User":"","Volumes":{},"WorkingDir":"","capAdd":null,"capDrop":null,"containerIDFile":null,"name":null,"readonlyRootfs":false,"ulimits":null}
DEBU[1019] Creating dest directory: /var/lib/docker/vfs/dir/1757d5695980ac86044cfd837f0b9fe3d3b9496370965022829b51e78830a386-init
DEBU[1019] Calling TarUntar(/var/lib/docker/vfs/dir/98e4860d0d1c01b8c25bc6752effd160539f126256b45979a578abbc9c08ab84, /var/lib/docker/vfs/dir/1757d5695980ac86044cfd837f0b9fe3d3b9496370965022829b51e78830a386-init)
DEBU[1019] TarUntar(/var/lib/docker/vfs/dir/98e4860d0d1c01b8c25bc6752effd160539f126256b45979a578abbc9c08ab84 /var/lib/docker/vfs/dir/1757d5695980ac86044cfd837f0b9fe3d3b9496370965022829b51e78830a386-init)
DEBU[1022] Creating dest directory: /var/lib/docker/vfs/dir/1757d5695980ac86044cfd837f0b9fe3d3b9496370965022829b51e78830a386
DEBU[1022] Calling TarUntar(/var/lib/docker/vfs/dir/1757d5695980ac86044cfd837f0b9fe3d3b9496370965022829b51e78830a386-init, /var/lib/docker/vfs/dir/1757d5695980ac86044cfd837f0b9fe3d3b9496370965022829b51e78830a386)
DEBU[1022] TarUntar(/var/lib/docker/vfs/dir/1757d5695980ac86044cfd837f0b9fe3d3b9496370965022829b51e78830a386-init /var/lib/docker/vfs/dir/1757d5695980ac86044cfd837f0b9fe3d3b9496370965022829b51e78830a386)
DEBU[1024] container mounted via layerStore: /var/lib/docker/vfs/dir/1757d5695980ac86044cfd837f0b9fe3d3b9496370965022829b51e78830a386
DEBU[1024] Calling POST /containers/4bc716406aa2645e165fd7172df78a56cd648bdfc53d3840b2b3632c92460e07/start
DEBU[1024] form data: {}
DEBU[1024] container mounted via layerStore: /var/lib/docker/vfs/dir/1757d5695980ac86044cfd837f0b9fe3d3b9496370965022829b51e78830a386
DEBU[1024] Assigning addresses for endpoint silly_jang's interface on network bridge
DEBU[1024] RequestAddress(LocalDefault/172.18.0.0/16, <nil>, map[])
DEBU[1024] Assigning addresses for endpoint silly_jang's interface on network bridge
DEBU[1024] Programming external connectivity on endpoint silly_jang (52f7bebf0b245dc1d54d895ce9b6357985417446a4943332484214ddbb8c4a1c)
DEBU[1024] sandbox set key processing took 37.238424ms for container 4bc716406aa2645e165fd7172df78a56cd648bdfc53d3840b2b3632c92460e07
DEBU[1024] received containerd event: &types.Event{Type:"start-container", Id:"4bc716406aa2645e165fd7172df78a56cd648bdfc53d3840b2b3632c92460e07", Status:0x0, Pid:"", Timestamp:0x57542640}
DEBU[1024] event unhandled: type:"start-container" id:"4bc716406aa2645e165fd7172df78a56cd648bdfc53d3840b2b3632c92460e07" timestamp:1465132608
DEBU[1024] Calling GET /containers/4bc716406aa2645e165fd7172df78a56cd648bdfc53d3840b2b3632c92460e07/json

All containers started by yad are running in the background with an sshd running.

{"message":"No such image: jenkins_slave_1:latest"}

I have this error:

Sep 28, 2016 7:07:57 AM INFO com.github.kostyasha.yad.DockerCloud provision

Asked to provision load: '1', for: 'docker-slave' label

Sep 28, 2016 7:07:57 AM INFO com.github.kostyasha.yad.DockerCloud provision

Will provision 'jenkins_slave_1', for label: 'docker-slave', in cloud: 'Local DockerHost'

Sep 28, 2016 7:07:57 AM INFO com.github.kostyasha.yad.DockerCloud addProvisionedSlave

Provisioning 'jenkins_slave_1' number '0' on 'Local DockerHost'; Total containers: '0'

Sep 28, 2016 7:07:57 AM INFO com.github.kostyasha.yad.DockerCloud provisionWithWait

Trying to run container for jenkins_slave_1

Sep 28, 2016 7:07:57 AM SEVERE com.github.kostyasha.yad_docker_java.com.github.dockerjava.core.async.ResultCallbackTemplate onError

Error during callback
com.github.kostyasha.yad_docker_java.com.github.dockerjava.api.exception.NotFoundException: {"message":"No such image: jenkins_slave_1:latest"}

I don't know why, but Yer another Docker Plugin can provide the slave container.

I have this in settings:
seleccion_276
seleccion_277

As you can see i put the same docker image than i have in my terminal:
seleccion_278
jenkins_slave_1.

I tried with jenkins_slave but doesn't works.

I don't know what have i wrong.

I'm using docker 1.12.1 and jenkins 2.23, with lastest Yer another Docker Plugin.

And not, isn't connection problem, see:
seleccion_279

I have this Dockerfile for jenkins-slave image:

FROM debian:jessie
MAINTAINER José L. Sandoval A.

# Install all dependencies
RUN echo 'deb http://httpredir.debian.org/debian jessie-backports main' > /etc/apt/sources.list.d/jessie-backports.list

ENV JAVA_VERSION 8u102
ENV JAVA_DEBIAN_VERSION 8u102-b14.1-1~bpo8+1

# see https://bugs.debian.org/775775
# and https://github.com/docker-library/java/issues/19#issuecomment-70546872
ENV CA_CERTIFICATES_JAVA_VERSION 20140324

# Install Essentials and Packages
RUN apt-get update \
    && apt-get install -y gettext git wget \
    openssh-server openjdk-8-jdk="$JAVA_DEBIAN_VERSION"\
    ca-certificates-java="$CA_CERTIFICATES_JAVA_VERSION" \
    sudo \
    && apt-get autoremove -y --purge \
    && rm -rf /var/lib/apt/lists/*

RUN /var/lib/dpkg/info/ca-certificates-java.postinst configure

# Create Jenkins User
RUN useradd jenkins -m -s /bin/bash

RUN chown -R jenkins /home/jenkins
RUN chgrp -R jenkins /home/jenkins

# Add the jenkins user to sudoers
RUN echo "jenkins    ALL=(ALL)    ALL" >> etc/sudoers

# Set Name Servers
COPY /files/resolv.conf /etc/resolv.conf

Thanks!

Unable to connect a cloud via socket

Hi,
I'm currently trying to get the yet-another-docker-plugin working with the latest Jenkins version in a docker container. So basically I'm setting up my Jenkins instance and trying to add the host as a Cloud.

Here is the Jenkins setup (very simple): https://github.com/foxylion-playground/jenkins-vagrant-docker

The unix socket is mounted into the running jenkins container (and docker is working inside). When adding unix:///var/run/docker.socket I get the following errors when testing the connection:

Using NETTY:

javax.servlet.ServletException: java.lang.NoClassDefFoundError: Could not initialize class com.github.kostyasha.yad_docker_java.io.netty.channel.epoll.IovArray
    at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:796)
    at org.kohsuke.stapler.Stapler.invoke(Stapler.java:876)
    at org.kohsuke.stapler.MetaClass$5.doDispatch(MetaClass.java:233)
    at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:58)
    at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:746)
    at org.kohsuke.stapler.Stapler.invoke(Stapler.java:876)
    at org.kohsuke.stapler.Stapler.invoke(Stapler.java:649)
    at org.kohsuke.stapler.Stapler.service(Stapler.java:238)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
    at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:812)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1669)
    at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:135)
    at hudson.util.PluginServletFilter.doFilter(PluginServletFilter.java:126)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)
    at hudson.security.csrf.CrumbFilter.doFilter(CrumbFilter.java:49)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)
    at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:84)
    at hudson.security.UnwrapSecurityExceptionFilter.doFilter(UnwrapSecurityExceptionFilter.java:51)
    at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
    at jenkins.security.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:117)
    at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
    at org.acegisecurity.providers.anonymous.AnonymousProcessingFilter.doFilter(AnonymousProcessingFilter.java:125)
    at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
    at org.acegisecurity.ui.rememberme.RememberMeProcessingFilter.doFilter(RememberMeProcessingFilter.java:142)
    at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
    at org.acegisecurity.ui.AbstractProcessingFilter.doFilter(AbstractProcessingFilter.java:271)
    at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
    at jenkins.security.BasicHeaderProcessor.doFilter(BasicHeaderProcessor.java:93)
    at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
    at org.acegisecurity.context.HttpSessionContextIntegrationFilter.doFilter(HttpSessionContextIntegrationFilter.java:249)
    at hudson.security.HttpSessionContextIntegrationFilter2.doFilter(HttpSessionContextIntegrationFilter2.java:67)
    at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
    at hudson.security.ChainedServletFilter.doFilter(ChainedServletFilter.java:76)
    at hudson.security.HudsonFilter.doFilter(HudsonFilter.java:171)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)
    at org.kohsuke.stapler.compression.CompressionFilter.doFilter(CompressionFilter.java:49)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)
    at hudson.util.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:82)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)
    at org.kohsuke.stapler.DiagnosticThreadNameFilter.doFilter(DiagnosticThreadNameFilter.java:30)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)
    at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:585)
    at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)
    at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:553)
    at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:223)
    at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1127)
    at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:515)
    at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)
    at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1061)
    at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
    at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97)
    at org.eclipse.jetty.server.Server.handle(Server.java:499)
    at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:311)
    at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:257)
    at org.eclipse.jetty.io.AbstractConnection$2.run(AbstractConnection.java:544)
    at winstone.BoundedExecutorService$1.run(BoundedExecutorService.java:77)
    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)
Caused by: java.lang.NoClassDefFoundError: Could not initialize class com.github.kostyasha.yad_docker_java.io.netty.channel.epoll.IovArray
    at com.github.kostyasha.yad_docker_java.io.netty.channel.epoll.EpollEventLoop.<init>(EpollEventLoop.java:62)
    at com.github.kostyasha.yad_docker_java.io.netty.channel.epoll.EpollEventLoopGroup.newChild(EpollEventLoopGroup.java:130)
    at com.github.kostyasha.yad_docker_java.io.netty.channel.epoll.EpollEventLoopGroup.newChild(EpollEventLoopGroup.java:35)
    at com.github.kostyasha.yad_docker_java.io.netty.util.concurrent.MultithreadEventExecutorGroup.<init>(MultithreadEventExecutorGroup.java:84)
    at com.github.kostyasha.yad_docker_java.io.netty.util.concurrent.MultithreadEventExecutorGroup.<init>(MultithreadEventExecutorGroup.java:58)
    at com.github.kostyasha.yad_docker_java.io.netty.util.concurrent.MultithreadEventExecutorGroup.<init>(MultithreadEventExecutorGroup.java:47)
    at com.github.kostyasha.yad_docker_java.io.netty.channel.MultithreadEventLoopGroup.<init>(MultithreadEventLoopGroup.java:58)
    at com.github.kostyasha.yad_docker_java.io.netty.channel.epoll.EpollEventLoopGroup.<init>(EpollEventLoopGroup.java:100)
    at com.github.kostyasha.yad_docker_java.io.netty.channel.epoll.EpollEventLoopGroup.<init>(EpollEventLoopGroup.java:87)
    at com.github.kostyasha.yad_docker_java.io.netty.channel.epoll.EpollEventLoopGroup.<init>(EpollEventLoopGroup.java:64)
    at com.github.kostyasha.yad_docker_java.com.github.dockerjava.netty.NettyDockerCmdExecFactory$UnixDomainSocketInitializer.init(NettyDockerCmdExecFactory.java:220)
    at com.github.kostyasha.yad_docker_java.com.github.dockerjava.netty.NettyDockerCmdExecFactory.init(NettyDockerCmdExecFactory.java:196)
    at com.github.kostyasha.yad_docker_java.com.github.dockerjava.core.DockerClientImpl.withDockerCmdExecFactory(DockerClientImpl.java:161)
    at com.github.kostyasha.yad.client.ClientBuilderForConnector.build(ClientBuilderForConnector.java:185)
    at com.github.kostyasha.yad.DockerConnector$DescriptorImpl.doTestConnection(DockerConnector.java:211)
    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.kohsuke.stapler.Function$InstanceFunction.invoke(Function.java:324)
    at org.kohsuke.stapler.Function.bindAndInvoke(Function.java:167)
    at org.kohsuke.stapler.Function.bindAndInvokeAndServeResponse(Function.java:100)
    at org.kohsuke.stapler.MetaClass$1.doDispatch(MetaClass.java:124)
    at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:58)
    at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:746)
    ... 58 more

Using JERSEY:

com.github.kostyasha.yad_docker_java.org.newsclub.net.unix.NativeUnixSocket.connect(Ljava/lang/String;Ljava/io/FileDescriptor;)V
com.github.kostyasha.yad_docker_java.javax.ws.rs.ProcessingException: com.github.kostyasha.yad_docker_java.org.newsclub.net.unix.NativeUnixSocket.connect(Ljava/lang/String;Ljava/io/FileDescriptor;)V
    at com.github.kostyasha.yad_docker_java.org.glassfish.jersey.client.ClientRuntime.invoke(ClientRuntime.java:261)
    at com.github.kostyasha.yad_docker_java.org.glassfish.jersey.client.JerseyInvocation$2.call(JerseyInvocation.java:701)
    at com.github.kostyasha.yad_docker_java.org.glassfish.jersey.internal.Errors.process(Errors.java:315)
    at com.github.kostyasha.yad_docker_java.org.glassfish.jersey.internal.Errors.process(Errors.java:297)
    at com.github.kostyasha.yad_docker_java.org.glassfish.jersey.internal.Errors.process(Errors.java:228)
    at com.github.kostyasha.yad_docker_java.org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:444)
    at com.github.kostyasha.yad_docker_java.org.glassfish.jersey.client.JerseyInvocation.invoke(JerseyInvocation.java:697)
    at com.github.kostyasha.yad_docker_java.org.glassfish.jersey.client.JerseyInvocation$Builder.method(JerseyInvocation.java:420)
    at com.github.kostyasha.yad_docker_java.org.glassfish.jersey.client.JerseyInvocation$Builder.get(JerseyInvocation.java:316)
    at com.github.kostyasha.yad_docker_java.com.github.dockerjava.jaxrs.VersionCmdExec.execute(VersionCmdExec.java:26)
    at com.github.kostyasha.yad_docker_java.com.github.dockerjava.jaxrs.VersionCmdExec.execute(VersionCmdExec.java:13)
    at com.github.kostyasha.yad_docker_java.com.github.dockerjava.jaxrs.AbstrSyncDockerCmdExec.exec(AbstrSyncDockerCmdExec.java:23)
    at com.github.kostyasha.yad_docker_java.com.github.dockerjava.core.command.AbstrDockerCmd.exec(AbstrDockerCmd.java:35)
    at com.github.kostyasha.yad.DockerConnector$DescriptorImpl.doTestConnection(DockerConnector.java:213)
    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.kohsuke.stapler.Function$InstanceFunction.invoke(Function.java:324)
    at org.kohsuke.stapler.Function.bindAndInvoke(Function.java:167)
    at org.kohsuke.stapler.Function.bindAndInvokeAndServeResponse(Function.java:100)
    at org.kohsuke.stapler.MetaClass$1.doDispatch(MetaClass.java:124)
    at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:58)
    at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:746)
    at org.kohsuke.stapler.Stapler.invoke(Stapler.java:876)
    at org.kohsuke.stapler.MetaClass$5.doDispatch(MetaClass.java:233)
    at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:58)
    at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:746)
    at org.kohsuke.stapler.Stapler.invoke(Stapler.java:876)
    at org.kohsuke.stapler.Stapler.invoke(Stapler.java:649)
    at org.kohsuke.stapler.Stapler.service(Stapler.java:238)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
    at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:812)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1669)
    at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:135)
    at hudson.util.PluginServletFilter.doFilter(PluginServletFilter.java:126)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)
    at hudson.security.csrf.CrumbFilter.doFilter(CrumbFilter.java:49)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)
    at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:84)
    at hudson.security.UnwrapSecurityExceptionFilter.doFilter(UnwrapSecurityExceptionFilter.java:51)
    at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
    at jenkins.security.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:117)
    at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
    at org.acegisecurity.providers.anonymous.AnonymousProcessingFilter.doFilter(AnonymousProcessingFilter.java:125)
    at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
    at org.acegisecurity.ui.rememberme.RememberMeProcessingFilter.doFilter(RememberMeProcessingFilter.java:142)
    at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
    at org.acegisecurity.ui.AbstractProcessingFilter.doFilter(AbstractProcessingFilter.java:271)
    at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
    at jenkins.security.BasicHeaderProcessor.doFilter(BasicHeaderProcessor.java:93)
    at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
    at org.acegisecurity.context.HttpSessionContextIntegrationFilter.doFilter(HttpSessionContextIntegrationFilter.java:249)
    at hudson.security.HttpSessionContextIntegrationFilter2.doFilter(HttpSessionContextIntegrationFilter2.java:67)
    at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
    at hudson.security.ChainedServletFilter.doFilter(ChainedServletFilter.java:76)
    at hudson.security.HudsonFilter.doFilter(HudsonFilter.java:171)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)
    at org.kohsuke.stapler.compression.CompressionFilter.doFilter(CompressionFilter.java:49)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)
    at hudson.util.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:82)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)
    at org.kohsuke.stapler.DiagnosticThreadNameFilter.doFilter(DiagnosticThreadNameFilter.java:30)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)
    at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:585)
    at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)
    at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:553)
    at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:223)
    at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1127)
    at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:515)
    at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)
    at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1061)
    at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
    at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97)
    at org.eclipse.jetty.server.Server.handle(Server.java:499)
    at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:311)
    at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:257)
    at org.eclipse.jetty.io.AbstractConnection$2.run(AbstractConnection.java:544)
    at winstone.BoundedExecutorService$1.run(BoundedExecutorService.java:77)
    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)
Caused by: java.lang.UnsatisfiedLinkError: com.github.kostyasha.yad_docker_java.org.newsclub.net.unix.NativeUnixSocket.connect(Ljava/lang/String;Ljava/io/FileDescriptor;)V
    at com.github.kostyasha.yad_docker_java.org.newsclub.net.unix.NativeUnixSocket.connect(Native Method)
    at com.github.kostyasha.yad_docker_java.org.newsclub.net.unix.AFUNIXSocketImpl.connect(AFUNIXSocketImpl.java:134)
    at com.github.kostyasha.yad_docker_java.org.newsclub.net.unix.AFUNIXSocket.connect(AFUNIXSocket.java:97)
    at com.github.kostyasha.yad_docker_java.com.github.dockerjava.jaxrs.ApacheUnixSocket.connect(ApacheUnixSocket.java:62)
    at com.github.kostyasha.yad_docker_java.com.github.dockerjava.jaxrs.UnixConnectionSocketFactory.connectSocket(UnixConnectionSocketFactory.java:74)
    at com.github.kostyasha.yad_docker_java.org.apache.http.impl.conn.DefaultHttpClientConnectionOperator.connect(DefaultHttpClientConnectionOperator.java:134)
    at com.github.kostyasha.yad_docker_java.org.apache.http.impl.conn.PoolingHttpClientConnectionManager.connect(PoolingHttpClientConnectionManager.java:353)
    at com.github.kostyasha.yad_docker_java.org.apache.http.impl.execchain.MainClientExec.establishRoute(MainClientExec.java:380)
    at com.github.kostyasha.yad_docker_java.org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:236)
    at com.github.kostyasha.yad_docker_java.org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:184)
    at com.github.kostyasha.yad_docker_java.org.apache.http.impl.execchain.RetryExec.execute(RetryExec.java:88)
    at com.github.kostyasha.yad_docker_java.org.apache.http.impl.execchain.RedirectExec.execute(RedirectExec.java:110)
    at com.github.kostyasha.yad_docker_java.org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:184)
    at com.github.kostyasha.yad_docker_java.org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:71)
    at com.github.kostyasha.yad_docker_java.org.glassfish.jersey.apache.connector.ApacheConnector.apply(ApacheConnector.java:435)
    at com.github.kostyasha.yad_docker_java.org.glassfish.jersey.client.ClientRuntime.invoke(ClientRuntime.java:252)
    ... 81 more

Sorry to bother you with that question, but I couldn't find any solution to that. 😞

It's btw pretty easy to try it yourself:

git clone [email protected]:foxylion-playground/jenkins-vagrant-docker.git
cd jenkins-vagrant-docker
vagrant up

Open http://10.111.0.10/configure and login with admin/admin. Then add the "Yet Another Docker Plugin" cloud with unix:///var/run/docker.sock and click "Test connection".

Having an option to add --no-check-certificate to wget

Hi,

For testing purpose, we got jenkins over https, but is self certificate. So, not recognized by certs chains.

When the jenkins slave container is started, I got this:

++ command -v wget

  • [[ -x /usr/bin/wget ]]
  • wget https://myserver.example.com//jnlpJars/slave.jar -O slave.jar
    --2016-10-07 09:43:56-- https://myserver.example.com//jnlpJars/slave.jar
    Resolving larsonsh_jenkins-hpe4it.app.ucp-dev.g4ihos.itcs.hpecorp.net... 16.85.1.94
    Connecting to larsonsh_jenkins-hpe4it.app.ucp-dev.g4ihos.itcs.hpecorp.net|16.85.1.94|:443... connected.
    ERROR: cannot verify myserver.example.com's certificate, issued by 'CN=MyCompany Private SSL CA,OU=Infrastructure Services,O=My Company,C=US':
    Unable to locally verify the issuer's authority.
    ERROR: no certificate subject alternative name matches
    requested host name 'myserver.example.com'.
    To connect to myserver.example.com insecurely, use `--no-check-certificate'.

I did not find a way to add this from the plugin configuration page...

So, how could we accept insecure connection if we want that?

https protocol is not supported

I enter the URL for the UCP in the Field Docker URL. UCP is always with SSL encryption. And i get following error message:

com.github.kostyasha.yad.docker_java.org.apache.http.conn.UnsupportedSchemeException: https protocol is not supported
com.github.kostyasha.yad.docker_java.javax.ws.rs.ProcessingException: com.github.kostyasha.yad.docker_java.org.apache.http.conn.UnsupportedSchemeException: https protocol is not supported
    at com.github.kostyasha.yad.docker_java.com.github.dockerjava.jaxrs.connector.ApacheConnector.apply(ApacheConnector.java:488)
    at com.github.kostyasha.yad.docker_java.org.glassfish.jersey.client.ClientRuntime.invoke(ClientRuntime.java:246)
    at com.github.kostyasha.yad.docker_java.org.glassfish.jersey.client.JerseyInvocation$2.call(JerseyInvocation.java:683)
    at com.github.kostyasha.yad.docker_java.org.glassfish.jersey.internal.Errors.process(Errors.java:315)
    at com.github.kostyasha.yad.docker_java.org.glassfish.jersey.internal.Errors.process(Errors.java:297)
    at com.github.kostyasha.yad.docker_java.org.glassfish.jersey.internal.Errors.process(Errors.java:228)

i thougth yet-another-docker-plugin supports https?

The plugin doesn't work if Jenkins is running with Java 1.7

I have try to run your plugin in my Jenkins instance that use a Java version:

$java -version
java version "1.7.0_80"
Java(TM) SE Runtime Environment (build 1.7.0_80-b15)
Java HotSpot(TM) 64-Bit Server VM (build 24.80-b11, mixed mode)

but I get the following error:

WARNING: Failed to load com.github.kostyasha.yad.DockerProvisioningStrategy
java.lang.InstantiationException: java.lang.UnsupportedClassVersionError: com/github/kostyasha/yad/DockerProvisioningStrategy : Unsupported major.minor version 52.0
    at net.java.sezpoz.IndexItem.element(IndexItem.java:146)
    at hudson.ExtensionFinder$Sezpoz._find(ExtensionFinder.java:626)
    at hudson.ExtensionFinder$Sezpoz.find(ExtensionFinder.java:615)
    at hudson.ClassicPluginStrategy.findComponents(ClassicPluginStrategy.java:389)
    at hudson.ExtensionList.load(ExtensionList.java:349)
    at hudson.ExtensionList.ensureLoaded(ExtensionList.java:287)
    at hudson.ExtensionList.iterator(ExtensionList.java:156)
    at hudson.ClassicPluginStrategy.findComponents(ClassicPluginStrategy.java:382)
    at hudson.ExtensionList.load(ExtensionList.java:349)
    at hudson.ExtensionList.ensureLoaded(ExtensionList.java:287)
    at hudson.ExtensionList.getComponents(ExtensionList.java:167)
    at hudson.DescriptorExtensionList.load(DescriptorExtensionList.java:185)
    at hudson.ExtensionList.ensureLoaded(ExtensionList.java:287)
    at hudson.ExtensionList.iterator(ExtensionList.java:156)
    at jenkins.branch.CustomOrganizationFolderDescriptor.doAddSpecificDescriptors(CustomOrganizationFolderDescriptor.java:140)
    at jenkins.branch.CustomOrganizationFolderDescriptor.addSpecificDescriptors(CustomOrganizationFolderDescriptor.java:123)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at hudson.init.TaskMethodFinder.invoke(TaskMethodFinder.java:106)
    at hudson.init.TaskMethodFinder$TaskImpl.run(TaskMethodFinder.java:176)
    at org.jvnet.hudson.reactor.Reactor.runTask(Reactor.java:282)
    at jenkins.model.Jenkins$8.runTask(Jenkins.java:925)
    at org.jvnet.hudson.reactor.Reactor$2.run(Reactor.java:210)
    at org.jvnet.hudson.reactor.Reactor$Node.run(Reactor.java:117)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.UnsupportedClassVersionError: com/github/kostyasha/yad/DockerProvisioningStrategy : Unsupported major.minor version 52.0
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:800)
    at jenkins.util.AntClassLoader.defineClassFromData(AntClassLoader.java:1139)
    at hudson.ClassicPluginStrategy$AntClassLoader2.defineClassFromData(ClassicPluginStrategy.java:802)
    at jenkins.util.AntClassLoader.getClassFromStream(AntClassLoader.java:1310)
    at jenkins.util.AntClassLoader.findClassInComponents(AntClassLoader.java:1366)
    at jenkins.util.AntClassLoader.findClass(AntClassLoader.java:1326)
    at sun.reflect.GeneratedMethodAccessor5.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at jenkins.ClassLoaderReflectionToolkit.invoke(ClassLoaderReflectionToolkit.java:44)
    at jenkins.ClassLoaderReflectionToolkit._findClass(ClassLoaderReflectionToolkit.java:86)
    at hudson.PluginManager$UberClassLoader.findClass(PluginManager.java:1209)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
    at net.java.sezpoz.IndexItem.element(IndexItem.java:134)
    ... 28 more

Forget cloud strategy timeout after jenkins restart

Hello!
After jenkins` restart plugin(or jenkins itself) forget timeout for cloud retention strategy and it removes containers immediately after first use. This fixed by pressing "Apply" for current jenkins settings.

TLS connection hangs

Hi!

This issue is probably related to #13.

I set up TLS as decribed here and added credentials via "Docker Host Certificate Authentication". However when I click the "Test Connection" button in cloud settings it hangs. Nothing appears in the docker log, no error messages in Jenkins. If I run docker without TLS verification, connection works (it does not matter if "TLS Verify" checked and host credentials selected or not).

How can I help to debug this issue?

NPE when saving settings

Whenever I save my Jenkins settings, I get the following error.
The settings are saved anyways.

Jun 05, 2016 10:44:39 PM hudson.model.Descriptor$NewInstanceBindInterceptor instantiate
WARNING: falling back to default instantiation com.github.kostyasha.yad.strategy.DockerOnceRetentionStrategy {"stapler-class":"com.github.kostyasha.yad.strategy.DockerOnceRetentionStrategy","idleMinutes":"10"}
java.lang.NullPointerException
        at hudson.model.Descriptor$NewInstanceBindInterceptor.instantiate(Descriptor.java:641)
        at org.kohsuke.stapler.RequestImpl.instantiate(RequestImpl.java:749)
        at org.kohsuke.stapler.RequestImpl.access$200(RequestImpl.java:83)
        at org.kohsuke.stapler.RequestImpl$TypePair.convertJSON(RequestImpl.java:674)
        at org.kohsuke.stapler.RequestImpl.bindJSON(RequestImpl.java:478)
        at org.kohsuke.stapler.RequestImpl.injectSetters(RequestImpl.java:827)
        at org.kohsuke.stapler.RequestImpl.instantiate(RequestImpl.java:777)
        at org.kohsuke.stapler.RequestImpl.access$200(RequestImpl.java:83)
        at org.kohsuke.stapler.RequestImpl$TypePair.convertJSON(RequestImpl.java:674)
        at org.kohsuke.stapler.RequestImpl.bindJSON(RequestImpl.java:478)
        at org.kohsuke.stapler.RequestImpl.bindJSON(RequestImpl.java:474)
        at hudson.model.Descriptor.newInstance(Descriptor.java:590)
        at hudson.model.Descriptor$NewInstanceBindInterceptor.onConvert(Descriptor.java:661)
        at org.kohsuke.stapler.RequestImpl$TypePair.convertJSON(RequestImpl.java:617)
        at org.kohsuke.stapler.RequestImpl$TypePair.convertJSON(RequestImpl.java:712)
        at org.kohsuke.stapler.RequestImpl.bindJSON(RequestImpl.java:478)
        at org.kohsuke.stapler.RequestImpl.instantiate(RequestImpl.java:771)
        at org.kohsuke.stapler.RequestImpl.access$200(RequestImpl.java:83)
        at org.kohsuke.stapler.RequestImpl$TypePair.convertJSON(RequestImpl.java:674)
        at org.kohsuke.stapler.RequestImpl.bindJSON(RequestImpl.java:478)
        at org.kohsuke.stapler.RequestImpl.bindJSON(RequestImpl.java:474)
        at hudson.model.Descriptor.newInstance(Descriptor.java:590)
        at hudson.model.Descriptor.newInstancesFromHeteroList(Descriptor.java:1043)
        at hudson.model.Descriptor.newInstancesFromHeteroList(Descriptor.java:1005)
        at hudson.util.DescribableList.rebuildHetero(DescribableList.java:208)
        at jenkins.model.GlobalCloudConfiguration.configure(GlobalCloudConfiguration.java:24)
        at jenkins.model.Jenkins.configureDescriptor(Jenkins.java:3413)
        at jenkins.model.Jenkins.doConfigSubmit(Jenkins.java:3376)
        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.kohsuke.stapler.Function$InstanceFunction.invoke(Function.java:324)
        at org.kohsuke.stapler.Function.bindAndInvoke(Function.java:167)
        at org.kohsuke.stapler.Function.bindAndInvokeAndServeResponse(Function.java:100)
        at org.kohsuke.stapler.MetaClass$1.doDispatch(MetaClass.java:124)
        at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:58)
        at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:746)
        at org.kohsuke.stapler.Stapler.invoke(Stapler.java:876)
        at org.kohsuke.stapler.Stapler.invoke(Stapler.java:649)
        at org.kohsuke.stapler.Stapler.service(Stapler.java:238)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
        at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:812)
        at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1669)
        at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:135)
        at hudson.util.PluginServletFilter.doFilter(PluginServletFilter.java:126)
        at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)
        at hudson.security.csrf.CrumbFilter.doFilter(CrumbFilter.java:80)
        at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)
        at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:84)
        at hudson.security.UnwrapSecurityExceptionFilter.doFilter(UnwrapSecurityExceptionFilter.java:51)
        at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
        at jenkins.security.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:117)
        at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
        at org.acegisecurity.providers.anonymous.AnonymousProcessingFilter.doFilter(AnonymousProcessingFilter.java:125)
        at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
        at org.acegisecurity.ui.rememberme.RememberMeProcessingFilter.doFilter(RememberMeProcessingFilter.java:142)
        at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
        at org.acegisecurity.ui.AbstractProcessingFilter.doFilter(AbstractProcessingFilter.java:271)
        at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
        at jenkins.security.BasicHeaderProcessor.doFilter(BasicHeaderProcessor.java:93)
        at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
        at org.acegisecurity.context.HttpSessionContextIntegrationFilter.doFilter(HttpSessionContextIntegrationFilter.java:249)
        at hudson.security.HttpSessionContextIntegrationFilter2.doFilter(HttpSessionContextIntegrationFilter2.java:67)
        at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
        at hudson.security.ChainedServletFilter.doFilter(ChainedServletFilter.java:76)
        at hudson.security.HudsonFilter.doFilter(HudsonFilter.java:171)
        at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)
        at org.kohsuke.stapler.compression.CompressionFilter.doFilter(CompressionFilter.java:49)
        at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)
        at hudson.util.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:82)
        at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)
        at org.kohsuke.stapler.DiagnosticThreadNameFilter.doFilter(DiagnosticThreadNameFilter.java:30)
        at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)
        at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:585)
        at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)
        at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:553)
        at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:223)
        at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1127)
        at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:515)
        at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)
        at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1061)
        at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
        at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97)
        at org.eclipse.jetty.server.Server.handle(Server.java:499)
        at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:311)
        at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:257)
        at org.eclipse.jetty.io.AbstractConnection$2.run(AbstractConnection.java:544)
        at winstone.BoundedExecutorService$1.run(BoundedExecutorService.java:77)
        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)

Jun 05, 2016 10:44:39 PM hudson.model.Descriptor$NewInstanceBindInterceptor instantiate
WARNING: falling back to default instantiation com.github.kostyasha.yad.launcher.DockerComputerSSHLauncher {"stapler-class":"com.github.kostyasha.yad.launcher.DockerComputerSSHLauncher","sshConnector":{"credentialsId":"a6d59251-47b0-40e7-a
45c-bc071717d5b0","port":"22","javaPath":"/usr/bin/java","jvmOptions":"","prefixStartSlaveCmd":"","suffixStartSlaveCmd":"","launchTimeoutSeconds":"","maxNumRetries":"0","retryWaitTime":"0"}}
java.lang.NullPointerException
        at hudson.model.Descriptor$NewInstanceBindInterceptor.instantiate(Descriptor.java:641)
        at org.kohsuke.stapler.RequestImpl.instantiate(RequestImpl.java:749)
        at org.kohsuke.stapler.RequestImpl.access$200(RequestImpl.java:83)
        at org.kohsuke.stapler.RequestImpl$TypePair.convertJSON(RequestImpl.java:674)
        at org.kohsuke.stapler.RequestImpl.bindJSON(RequestImpl.java:478)
        at org.kohsuke.stapler.RequestImpl.injectSetters(RequestImpl.java:827)
        at org.kohsuke.stapler.RequestImpl.instantiate(RequestImpl.java:777)
        at org.kohsuke.stapler.RequestImpl.access$200(RequestImpl.java:83)
        at org.kohsuke.stapler.RequestImpl$TypePair.convertJSON(RequestImpl.java:674)
        at org.kohsuke.stapler.RequestImpl.bindJSON(RequestImpl.java:478)
        at org.kohsuke.stapler.RequestImpl.bindJSON(RequestImpl.java:474)
        at hudson.model.Descriptor.newInstance(Descriptor.java:590)
        at hudson.model.Descriptor$NewInstanceBindInterceptor.onConvert(Descriptor.java:661)
        at org.kohsuke.stapler.RequestImpl$TypePair.convertJSON(RequestImpl.java:617)
        at org.kohsuke.stapler.RequestImpl$TypePair.convertJSON(RequestImpl.java:712)
        at org.kohsuke.stapler.RequestImpl.bindJSON(RequestImpl.java:478)
        at org.kohsuke.stapler.RequestImpl.instantiate(RequestImpl.java:771)
        at org.kohsuke.stapler.RequestImpl.access$200(RequestImpl.java:83)
        at org.kohsuke.stapler.RequestImpl$TypePair.convertJSON(RequestImpl.java:674)
        at org.kohsuke.stapler.RequestImpl.bindJSON(RequestImpl.java:478)
        at org.kohsuke.stapler.RequestImpl.bindJSON(RequestImpl.java:474)
        at hudson.model.Descriptor.newInstance(Descriptor.java:590)
        at hudson.model.Descriptor.newInstancesFromHeteroList(Descriptor.java:1043)
        at hudson.model.Descriptor.newInstancesFromHeteroList(Descriptor.java:1005)
        at hudson.util.DescribableList.rebuildHetero(DescribableList.java:208)
        at jenkins.model.GlobalCloudConfiguration.configure(GlobalCloudConfiguration.java:24)
        at jenkins.model.Jenkins.configureDescriptor(Jenkins.java:3413)
        at jenkins.model.Jenkins.doConfigSubmit(Jenkins.java:3376)
        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.kohsuke.stapler.Function$InstanceFunction.invoke(Function.java:324)
        at org.kohsuke.stapler.Function.bindAndInvoke(Function.java:167)
        at org.kohsuke.stapler.Function.bindAndInvokeAndServeResponse(Function.java:100)
        at org.kohsuke.stapler.MetaClass$1.doDispatch(MetaClass.java:124)
        at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:58)
        at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:746)
        at org.kohsuke.stapler.Stapler.invoke(Stapler.java:876)
        at org.kohsuke.stapler.Stapler.invoke(Stapler.java:649)
        at org.kohsuke.stapler.Stapler.service(Stapler.java:238)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
        at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:812)
        at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1669)
        at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:135)
        at hudson.util.PluginServletFilter.doFilter(PluginServletFilter.java:126)
        at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)
        at hudson.security.csrf.CrumbFilter.doFilter(CrumbFilter.java:80)
        at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)
        at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:84)
        at hudson.security.UnwrapSecurityExceptionFilter.doFilter(UnwrapSecurityExceptionFilter.java:51)
        at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
        at jenkins.security.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:117)
        at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
        at org.acegisecurity.providers.anonymous.AnonymousProcessingFilter.doFilter(AnonymousProcessingFilter.java:125)
        at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
        at org.acegisecurity.ui.rememberme.RememberMeProcessingFilter.doFilter(RememberMeProcessingFilter.java:142)
        at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
        at org.acegisecurity.ui.AbstractProcessingFilter.doFilter(AbstractProcessingFilter.java:271)
        at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
        at hudson.security.ChainedServletFilter.doFilter(ChainedServletFilter.java:76)
        at hudson.security.HudsonFilter.doFilter(HudsonFilter.java:171)
        at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)
        at org.kohsuke.stapler.compression.CompressionFilter.doFilter(CompressionFilter.java:49)
        at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)
        at hudson.util.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:82)
        at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)
        at org.kohsuke.stapler.DiagnosticThreadNameFilter.doFilter(DiagnosticThreadNameFilter.java:30)
        at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)
        at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:585)
        at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)
        at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:553)
        at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:223)
        at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1127)
        at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:515)
        at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)
        at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1061)
        at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
        at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97)
        at org.eclipse.jetty.server.Server.handle(Server.java:499)
        at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:311)
        at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:257)
        at org.eclipse.jetty.io.AbstractConnection$2.run(AbstractConnection.java:544)
        at winstone.BoundedExecutorService$1.run(BoundedExecutorService.java:77)
        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)

Unix protocol does not work

When I try to connect to docker via the unix socket protocol, and hit the test button, I get the following exception:

java.lang.UnsatisfiedLinkError: com.github.kostyasha.yad.docker_java.org.newsclub.net.unix.NativeUnixSocket.setCreated(Lcom/github/kostyasha/yad/docker_java/org/newsclub/net/unix/AFUNIXSocket;)V
        at com.github.kostyasha.yad.docker_java.org.newsclub.net.unix.NativeUnixSocket.setCreated(Native Method)
        at com.github.kostyasha.yad.docker_java.org.newsclub.net.unix.AFUNIXSocket.<init>(AFUNIXSocket.java:36)
        at com.github.kostyasha.yad.docker_java.org.newsclub.net.unix.AFUNIXSocket.newInstance(AFUNIXSocket.java:50)
        at com.github.kostyasha.yad.docker_java.com.github.dockerjava.jaxrs.ApacheUnixSocket.<init>(ApacheUnixSocket.java:53)
        at com.github.kostyasha.yad.docker_java.com.github.dockerjava.jaxrs.UnixConnectionSocketFactory.createSocket(UnixConnectionSocketFactory.java:65)
        at com.github.kostyasha.yad.docker_java.org.apache.http.impl.conn.HttpClientConnectionOperator.connect(HttpClientConnectionOperator.java:108)
        at com.github.kostyasha.yad.docker_java.org.apache.http.impl.conn.PoolingHttpClientConnectionManager.connect(PoolingHttpClientConnectionManager.java:314)
        at com.github.kostyasha.yad.docker_java.org.apache.http.impl.execchain.MainClientExec.establishRoute(MainClientExec.java:357)
        at com.github.kostyasha.yad.docker_java.org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:218)
        at com.github.kostyasha.yad.docker_java.org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:194)
        at com.github.kostyasha.yad.docker_java.org.apache.http.impl.execchain.RetryExec.execute(RetryExec.java:85)
        at com.github.kostyasha.yad.docker_java.org.apache.http.impl.execchain.RedirectExec.execute(RedirectExec.java:108)
        at com.github.kostyasha.yad.docker_java.org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:186)
        at com.github.kostyasha.yad.docker_java.org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:72)
        at com.github.kostyasha.yad.docker_java.com.github.dockerjava.jaxrs.connector.ApacheConnector.apply(ApacheConnector.java:441)
        at com.github.kostyasha.yad.docker_java.org.glassfish.jersey.client.ClientRuntime.invoke(ClientRuntime.java:246)
        at com.github.kostyasha.yad.docker_java.org.glassfish.jersey.client.JerseyInvocation$2.call(JerseyInvocation.java:683)
        at com.github.kostyasha.yad.docker_java.org.glassfish.jersey.internal.Errors.process(Errors.java:315)
        at com.github.kostyasha.yad.docker_java.org.glassfish.jersey.internal.Errors.process(Errors.java:297)
        at com.github.kostyasha.yad.docker_java.org.glassfish.jersey.internal.Errors.process(Errors.java:228)
        at com.github.kostyasha.yad.docker_java.org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:424)
        at com.github.kostyasha.yad.docker_java.org.glassfish.jersey.client.JerseyInvocation.invoke(JerseyInvocation.java:679)
        at com.github.kostyasha.yad.docker_java.org.glassfish.jersey.client.JerseyInvocation$Builder.method(JerseyInvocation.java:408)
        at com.github.kostyasha.yad.docker_java.org.glassfish.jersey.client.JerseyInvocation$Builder.get(JerseyInvocation.java:308)
        at com.github.kostyasha.yad.docker_java.com.github.dockerjava.jaxrs.VersionCmdExec.execute(VersionCmdExec.java:25)
        at com.github.kostyasha.yad.docker_java.com.github.dockerjava.jaxrs.VersionCmdExec.execute(VersionCmdExec.java:12)
        at com.github.kostyasha.yad.docker_java.com.github.dockerjava.jaxrs.AbstrSyncDockerCmdExec.exec(AbstrSyncDockerCmdExec.java:23)
        at com.github.kostyasha.yad.docker_java.com.github.dockerjava.core.command.AbstrDockerCmd.exec(AbstrDockerCmd.java:33)
        at com.github.kostyasha.yad.DockerConnector$DescriptorImpl.doTestConnection(DockerConnector.java:189)
        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.kohsuke.stapler.Function$InstanceFunction.invoke(Function.java:324)
        at org.kohsuke.stapler.Function.bindAndInvoke(Function.java:167)
        at org.kohsuke.stapler.Function.bindAndInvokeAndServeResponse(Function.java:100)
        at org.kohsuke.stapler.MetaClass$1.doDispatch(MetaClass.java:124)
        at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:58)
        at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:746)
        at org.kohsuke.stapler.Stapler.invoke(Stapler.java:876)
        at org.kohsuke.stapler.MetaClass$5.doDispatch(MetaClass.java:233)
        at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:58)
        at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:746)
        at org.kohsuke.stapler.Stapler.invoke(Stapler.java:876)
        at org.kohsuke.stapler.Stapler.invoke(Stapler.java:649)
        at org.kohsuke.stapler.Stapler.service(Stapler.java:238)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
        at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:812)
        at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1669)
        at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:135)
        at hudson.util.PluginServletFilter.doFilter(PluginServletFilter.java:126)
        at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)
        at hudson.security.csrf.CrumbFilter.doFilter(CrumbFilter.java:80)
        at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)
        at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:84)
        at hudson.security.UnwrapSecurityExceptionFilter.doFilter(UnwrapSecurityExceptionFilter.java:51)
        at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
        at jenkins.security.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:117)
        at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
        at org.acegisecurity.providers.anonymous.AnonymousProcessingFilter.doFilter(AnonymousProcessingFilter.java:125)
        at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
        at org.acegisecurity.ui.rememberme.RememberMeProcessingFilter.doFilter(RememberMeProcessingFilter.java:142)
        at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
        at org.acegisecurity.ui.AbstractProcessingFilter.doFilter(AbstractProcessingFilter.java:271)
        at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
        at jenkins.security.BasicHeaderProcessor.doFilter(BasicHeaderProcessor.java:93)
        at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
        at org.acegisecurity.context.HttpSessionContextIntegrationFilter.doFilter(HttpSessionContextIntegrationFilter.java:249)
        at hudson.security.HttpSessionContextIntegrationFilter2.doFilter(HttpSessionContextIntegrationFilter2.java:67)
        at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
        at hudson.security.ChainedServletFilter.doFilter(ChainedServletFilter.java:76)
        at hudson.security.HudsonFilter.doFilter(HudsonFilter.java:171)
        at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)
        at org.kohsuke.stapler.compression.CompressionFilter.doFilter(CompressionFilter.java:49)
        at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)
        at hudson.util.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:82)
        at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)
        at org.kohsuke.stapler.DiagnosticThreadNameFilter.doFilter(DiagnosticThreadNameFilter.java:30)
        at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)
        at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:585)
        at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)
        at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:553)
        at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:223)
        at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1127)
        at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:515)
        at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)
        at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1061)
        at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
        at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97)
        at org.eclipse.jetty.server.Server.handle(Server.java:499)
        at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:311)
        at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:257)
        at org.eclipse.jetty.io.AbstractConnection$2.run(AbstractConnection.java:544)
        at winstone.BoundedExecutorService$1.run(BoundedExecutorService.java:77)
        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)

Support for swarm mode in 1.12?

Do you think it is possible -and likely- to support swarm mode coming with Docker 1.12 in this plugin?

Checking the remote api 1.24 for services, I'd say that it would be entirely possible to create a service with a single task.

It would be great to offer possible features of swarm in the cloud / image configuration. For example:

  • Resource reservation, resource limit per service/image
  • Placement constraints per service/image, maybe even on a job basis (I have no clue if this is possible in jenkins )

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.