Does docker-slaves-plugin with pipeline assume Linux?

537 views
Skip to first unread message

Geoff Bache

unread,
Aug 10, 2017, 11:14:30 AM8/10/17
to Jenkins Users

Hi all,

 

I have a Jenkins pipeline defined (Windows server 2016) and I’m trying to get it to use docker containers instead of building locally. The docker-slaves-plugin looked like the most convenient interface for this among a confusing forest of different Docker plugins.

 

So I installed it and pointed it at my Docker image in the configuration. It carried on exactly as before and ignored Docker entirely, even after Jenkins restart.

 

I then found a hint that I should replace “node” with “dockerNode(‘myimage’)” in my Jenkinsfile. So I did that, and got the following in my build log (with debug option enabled).

Note the “docker create” line which seems to be referring to a bunch of linux paths that just don’t exist and looks a bit hardcoded...


If, as I suspect, this isn't supported, any hints on which plugin to use instead would be appreciated.

 

Regards,

Geoff Bache

 

Start Docker container to host the build

$ docker volume create

$ docker create --interactive --log-driver=none --env TMPDIR=/home/jenkins/.tmp --user 10000:10000 --rm --volume 45aa67db1c5cc27820ebc3afd7abdd4a708b78f8d7ce2720fdbc2c7956ac2a52:/home/jenkins/ jenkins/agent/ java -Djava.io.tmpdir=/home/jenkins/.tmp -jar /home/jenkins/slave.jar

Error parsing reference: "jenkins/agent/" is not a valid repository/tag: invalid reference format

[Pipeline] // dockerNode

[Pipeline] }

[Pipeline] // stage

[Pipeline] }

[Pipeline] // node

[Pipeline] End of Pipeline

java.io.IOException: Failed to create docker image

        at it.dockins.dockerslaves.drivers.CliDockerDriver.launchRemotingContainer(CliDockerDriver.java:176)

        at it.dockins.dockerslaves.DefaultDockerProvisioner.launchRemotingContainer(DefaultDockerProvisioner.java:88)

        at it.dockins.dockerslaves.DockerComputerLauncher.launch(DockerComputerLauncher.java:58)

        at it.dockins.dockerslaves.DockerComputerLauncher.launch(DockerComputerLauncher.java:49)

        at it.dockins.dockerslaves.api.OneShotSlave.provision(OneShotSlave.java:123)

Caused: it.dockins.dockerslaves.api.OneShotExecutorProvisioningException

        at it.dockins.dockerslaves.api.OneShotSlave.provisionFailed(OneShotSlave.java:145)

        at it.dockins.dockerslaves.api.OneShotSlave.provision(OneShotSlave.java:129)

        at it.dockins.dockerslaves.api.OneShotSlave.createLauncher(OneShotSlave.java:154)

        at it.dockins.dockerslaves.DockerSlave.createLauncher(DockerSlave.java:96)

        at it.dockins.dockerslaves.pipeline.DockerNodeStepExecution$PlaceholderTask$PlaceholderExecutable.run(DockerNodeStepExecution.java:573)

        at hudson.model.ResourceController.execute(ResourceController.java:97)

        at hudson.model.Executor.run(Executor.java:405)

Finished: FAILURE

 

Slide

unread,
Aug 10, 2017, 11:22:17 AM8/10/17
to Jenkins Users
The extra slash after "agent" is odd, I assume that the docker create command is generated by the plugin?

--
You received this message because you are subscribed to the Google Groups "Jenkins Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to jenkinsci-use...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/jenkinsci-users/57ecdf26-75eb-4e04-b93c-35d403283ae1%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Geoff Bache

unread,
Aug 10, 2017, 11:29:39 AM8/10/17
to Jenkins Users

Yes, I didn't contribute anything to that generated command.

nicolas de loof

unread,
Aug 10, 2017, 12:20:18 PM8/10/17
to jenkins...@googlegroups.com
I'm on vacation so can't help before 1 week. Pipeline is fully supported, please check global configuration for the agent image you have configured for docker-slaves-plugin

To unsubscribe from this group and stop receiving emails from it, send an email to jenkinsci-users+unsubscribe@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/jenkinsci-users/dca1ccde-53bb-4056-ba43-68456da927d0%40googlegroups.com.

Jacob Larsen

unread,
Aug 10, 2017, 2:51:20 PM8/10/17
to jenkins...@googlegroups.com

Looks like the agent image is the default one that was just set in the latest release, see https://github.com/jenkinsci/docker-slaves-plugin/commit/2d0470b27a84ddff00c3e1adc7aec9b7e8dece00

Take a look at the Docker Slaves section of the global Jenkins configuration. The remoting image is probably set to jenkins/agent/. Notice the final slash as Slide mentions, I believe the specific error you experience would go away by removing that final slash.

Anyhow, that would probably not work for you no matter what. Since you are using a Windows Docker instance then you will need Windows images for the remoting image and the SCM image. But I have no idea if the volume mounts would work there. You might be right that this part is hardcoded to Linux.

/Jacob

nicolas de loof

unread,
Aug 10, 2017, 4:37:14 PM8/10/17
to jenkins...@googlegroups.com
Oh yes that's a stupid typo in default value, will fix this and push a release. We are still missing multi arch docker images so this same id can pull a Windows version of the agent image

--
You received this message because you are subscribed to the Google Groups "Jenkins Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to jenkinsci-users+unsubscribe@googlegroups.com.

Geoff Bache

unread,
Aug 11, 2017, 3:04:27 AM8/11/17
to Jenkins Users

I removed the extra slash in global configuration, but it still fails and there are still Linux-style paths that I don't seem to be able to configure. See text below.
I also tried using jenkinsci/slave, which the tooltip recommends, but got the same error.

/Geoff


Start Docker container to host the build
$ docker volume create
$ docker create --interactive --log-driver=none --env TMPDIR=/home/jenkins/.tmp --user 10000:10000 --rm --volume 20cf056ee345717252ece59811047e0692a9bea818f5ca23b79af77f220dbd0a:/home/jenkins/ jenkins/agent java -Djava.io.tmpdir=/home/jenkins/.tmp -jar /home/jenkins/slave.jar Error response from daemon: invalid bind mount spec "20cf056ee345717252ece59811047e0692a9bea818f5ca23b79af77f220dbd0a:/home/jenkins/": invalid volume specification: '20cf056ee345717252ece59811047e0692a9bea818f5ca23b79af77f220dbd0a:\home\jenkins\'

nicolas de loof

unread,
Aug 11, 2017, 3:08:51 AM8/11/17
to jenkins...@googlegroups.com
This plugin has never been tested for Windows containers, so I can't tell if they can work without changes.

--
You received this message because you are subscribed to the Google Groups "Jenkins Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to jenkinsci-users+unsubscribe@googlegroups.com.

Geoff Bache

unread,
Aug 11, 2017, 3:52:49 AM8/11/17
to Jenkins Users

OK, I think we can conclude from my evidence that it doesn't yet work on Windows then: I'm not trying to do anything beyond basic usage. Perhaps you could write this in the plugin description?
To unsubscribe from this group and stop receiving emails from it, send an email to jenkinsci-use...@googlegroups.com.

Thiago Carvalho Davila

unread,
Aug 11, 2017, 10:37:22 AM8/11/17
to jenkins...@googlegroups.com
That is very sad.. I have slaves for windows and linux, and I was begining a migration of my machine slaves to containers =(

Is there a JIRA feature created for that cause?

For more options, visit https://groups.google.com/d/optout.

-


"Esta mensagem do SERVIÇO FEDERAL DE PROCESSAMENTO DE DADOS (SERPRO), empresa pública federal regida pelo disposto na Lei Federal nº 5.615, é enviada exclusivamente a seu destinatário e pode conter informações confidenciais, protegidas por sigilo profissional. Sua utilização desautorizada é ilegal e sujeita o infrator às penas da lei. Se você a recebeu indevidamente, queira, por gentileza, reenviá-la ao emitente, esclarecendo o equívoco."

"This message from SERVIÇO FEDERAL DE PROCESSAMENTO DE DADOS (SERPRO) -- a government company established under Brazilian law (5.615/70) -- is directed exclusively to its addressee and may contain confidential data, protected under professional secrecy rules. Its unauthorized use is illegal and may subject the transgressor to the law's penalties. If you're not the addressee, please send it back, elucidating the failure."

nicolas de loof

unread,
Aug 12, 2017, 12:57:18 PM8/12/17
to jenkins...@googlegroups.com
I think you just miss a Jenkins agent docker image for Windows architecture, everything else should work (linux style paths aren't an issue afaik)

To unsubscribe from this group and stop receiving emails from it, send an email to jenkinsci-users+unsubscribe@googlegroups.com.

-


"Esta mensagem do SERVIÇO FEDERAL DE PROCESSAMENTO DE DADOS (SERPRO), empresa pública federal regida pelo disposto na Lei Federal nº 5.615, é enviada exclusivamente a seu destinatário e pode conter informações confidenciais, protegidas por sigilo profissional. Sua utilização desautorizada é ilegal e sujeita o infrator às penas da lei. Se você a recebeu indevidamente, queira, por gentileza, reenviá-la ao emitente, esclarecendo o equívoco."

"This message from SERVIÇO FEDERAL DE PROCESSAMENTO DE DADOS (SERPRO) -- a government company established under Brazilian law (5.615/70) -- is directed exclusively to its addressee and may contain confidential data, protected under professional secrecy rules. Its unauthorized use is illegal and may subject the transgressor to the law's penalties. If you're not the addressee, please send it back, elucidating the failure."

--
You received this message because you are subscribed to the Google Groups "Jenkins Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to jenkinsci-users+unsubscribe@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/jenkinsci-users/c027f377da0189d5277bdd934f925defc5e61f25%40serpro.gov.br.

Jacob Larsen

unread,
Aug 13, 2017, 6:16:34 AM8/13/17
to jenkins...@googlegroups.com

Wouldn't you need a Windows SCM image as well?

nicolas de loof

unread,
Aug 13, 2017, 6:21:33 AM8/13/17
to jenkins...@googlegroups.com
Yes indeed. But as long g as you use git this one is actually ran in Jenkins agent container due to an implementation issue.

--
You received this message because you are subscribed to the Google Groups "Jenkins Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to jenkinsci-users+unsubscribe@googlegroups.com.
Reply all
Reply to author
Forward
0 new messages