-
Bug
-
Resolution: Duplicate
-
Major
-
None
-
Jenkins ver. 2.107.2
Google Compute Engine Plugin 1.0.7
I can't use windows instances in GCE because of launching agent problem. Please help me to debug/resolve the issue.
Steps to reproduce:
- Create windows instance in GCE
- Login to the instance by RDP and add user tester with Administrator role
- Login to the instance by RDP as tester
- Install java8, cygwin with openssh, configure openssh (see how to here: https://docs.oracle.com/cd/E24628_01/install.121/e22624/preinstall_req_cygwin_ssh.htm#EMBSC281)
- Check you are able to connect by ssh with tester user and its password
- Create private/public rsa keypair (using ssh-keygen), put public key to the /home/tester/.ssh/authorized_keys file
- Copy generated private key to your computer to ~/key.txt
- Check you are able to connect to the instance with private key without password:
ssh -i ~/key.txt tester@<ip_address> - Stop the instance and create an image from the instance
- Goto http://<your_jenkins_address>/credentials/ page and add new credentials "SSH Username with private key", choose "enter directly" for private key and put generated private key here
- Add new "Instance configuration" for created image on http://<your_jenkins_address>/configure page: set "Windows?" checkbox, set "Windows Username"=tester, set "Windows SSH Private Key Credentials" to credentials that were created on prev step, set Labels=windows-gce-test, set "Remote Location"=C:\jenkins
- Run job with a label "windows-gce-test"
Expected: new GCE instance and jenkins slave are created, the slave is successfully connected and job is successfully ended
Actual: new GCE instance and jenkins slave are created, but slave can't connect
Slave output is the following:
INFO: Connecting to 35.233.217.99 on port 22, with timeout 10000.
Jan 10, 2019 4:42:07 AM null
INFO: Connected via SSH.
Jan 10, 2019 4:42:08 AM null
INFO: Copying slave.jar to: C:\
Jan 10, 2019 4:42:11 AM null
INFO: Verifying: java -fullversion
openjdk full version "1.8.0_181-b02"
Jan 10, 2019 4:42:12 AM null
INFO: Launching Jenkins agent via plugin SSH: java -jar C:\slave.jar
Jan 10, 2019 4:42:12 AM null
WARNING: Error: Exception: java.io.EOFException: unexpected stream termination
Jenkins log:
Connected via SSH.
Jan 10, 2019 5:04:02 AM INFO com.google.jenkins.plugins.computeengine.ComputeEngineCloud log
Copying slave.jar to: C:\
Jan 10, 2019 5:04:03 AM INFO com.google.jenkins.plugins.computeengine.ComputeEngineCloud log
Verifying: java -fullversion
Jan 10, 2019 5:04:03 AM INFO com.google.jenkins.plugins.computeengine.ComputeEngineCloud log
Launching Jenkins agent via plugin SSH: java -jar C:\slave.jar
Jan 10, 2019 5:04:03 AM WARNING com.google.jenkins.plugins.computeengine.ComputeEngineCloud log
Error:
java.io.EOFException: unexpected stream termination
at hudson.remoting.ChannelBuilder.negotiate(ChannelBuilder.java:408)
at hudson.remoting.ChannelBuilder.build(ChannelBuilder.java:353)
at hudson.slaves.SlaveComputer.setChannel(SlaveComputer.java:415)
at com.google.jenkins.plugins.computeengine.ComputeEngineWindowsLauncher.launch(ComputeEngineWindowsLauncher.java:128)
at com.google.jenkins.plugins.computeengine.ComputeEngineComputerLauncher.launch(ComputeEngineComputerLauncher.java:127)
at hudson.slaves.SlaveComputer$1.call(SlaveComputer.java:288)
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)
Jan 10, 2019 5:04:03 AM WARNING com.google.jenkins.plugins.computeengine.ComputeEngineCloud$1 call
Exception waiting for node zulu-win2016-tests-gce-enn0eu to connect
java.io.IOException: Agent failed to connect, even though the launcher didn't report it. See the log output for details.
at hudson.slaves.SlaveComputer$1.call(SlaveComputer.java:312)
Caused: java.util.concurrent.ExecutionException
at java.util.concurrent.FutureTask.report(FutureTask.java:122)
at java.util.concurrent.FutureTask.get(FutureTask.java:192)
at com.google.jenkins.plugins.computeengine.ComputeEngineCloud$1.call(ComputeEngineCloud.java:171)
at com.google.jenkins.plugins.computeengine.ComputeEngineCloud$1.call(ComputeEngineCloud.java:161)
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)
I'm not sure that GCE uses "Remote Location" for windows slaves (because the log says "INFO: Copying slave.jar to: C:\"). Could it be a cause of problem?
I'm unable to create GCE node because of JENKINS-55380 but tried to create permanent aget node and agent starts normally for it, I used the following parameters:
Permanent Agent
Remote root directory=.
Launch method=Launch agent agents via SSH
Credentails=<created_credentials_with_private_key>
Node log:
[01/10/19 05:14:27] [SSH] Checking java version of ./jdk/bin/java
Couldn't figure out the Java version of ./jdk/bin/java
bash: ./jdk/bin/java: No such file or directory
[01/10/19 05:14:27] [SSH] Checking java version of java
[01/10/19 05:14:27] [SSH] java -version returned 1.8.0_181.
[01/10/19 05:14:27] [SSH] Starting sftp client.
[01/10/19 05:14:28] [SSH] Copying latest remoting.jar...
[01/10/19 05:14:30] [SSH] Copied 762,466 bytes.
Expanded the channel window size to 4MB
[01/10/19 05:14:30] [SSH] Starting agent process: cd "." && java -jar remoting.jar -workDir .
Jan 10, 2019 1:14:30 PM org.jenkinsci.remoting.engine.WorkDirManager initializeWorkDir
INFO: Using .\remoting as a remoting work directory
Both error and output logs will be printed to .\remoting
<===[JENKINS REMOTING CAPACITY]===>channel started
Remoting version: 3.17
This is a Windows agent
NOTE: Relative remote path resolved to: C:\cygwin64\home\tester\.
Agent successfully connected and online