Here follows an update of some observations and configurations I have done to get building on Windows to work.
The Windows node is connected in Jenkins with SSH started by sshd in Cygwin. Using this guide: https://www.howtogeek.com/howto/41560/how-to-get-ssh-command-line-access-to-windows-7-using-cygwin/ The Windows node's "Remote root directory" is set to "C:\cygwin64\home\build", because "/home/build" would not work. Step withMaven woulld fail with use of the latter: [myApp_sverre_work-3U54DPE57F6TMOZM2O6QBWDQ2LNRU2QHAXT6INC3UPGWF2ERMXAQ] Running shell script sh: /home/build/workspace/myApp_sverre_work-3U54DPE57F6TMOZM2O6QBWDQ2LNRU2QHAXT6INC3UPGWF2ERMXAQ@tmp/durable-e1932da9/pid: No such file or directory sh: /home/build/workspace/myApp_sverre_work-3U54DPE57F6TMOZM2O6QBWDQ2LNRU2QHAXT6INC3UPGWF2ERMXAQ@tmp/durable-e1932da9/jenkins-log.txt: No such file or directory sh: /home/build/workspace/myApp_sverre_work-3U54DPE57F6TMOZM2O6QBWDQ2LNRU2QHAXT6INC3UPGWF2ERMXAQ@tmp/durable-e1932da9/jenkins-result.txt: No such file or directory I have also added an additional Windows JDK in Jenkins pointing to C:\Program Files\Java\jdk1.8.0_144. Creating a symlink in cygwin at /usr/java/jdk1.8.0_144 to /cygdrive/c/Program\ Files/jdk1.8.0_144 allowed me to use the same Jenkins JDK tool for both Windows and Linux (though only with the sh step). For the time being I have been using the pipeline step bat after checking !isUnix(). However with the bat step I must use a different JDK that points to the real directory in Windows C:\Program Files\Java\jdk1.8.0_144. Otherwise withMaven fails to find the JDK at /usr/java/jdk1.8.0_144 [myApp_sverre_work-3U54DPE57F6TMOZM2O6QBWDQ2LNRU2QHAXT6INC3UPGWF2ERMXAQ] Running batch script C:\cygwin64\home\build\workspace\myApp_sverre_work-3U54DPE57F6TMOZM2O6QBWDQ2LNRU2QHAXT6INC3UPGWF2ERMXAQ>mvn clean install ----- withMaven Wrapper script ----- The JAVA_HOME environment variable is not defined correctly This environment variable is needed to run this program NB: JAVA_HOME should point to a JDK not a JRE Using the sh step instead of the bat step in pipeline kinda works. However with one Exception. [withMaven] use Maven installation provided by the build agent with executable C:\Program Files\apache-maven-3.5.0\bin\mvn.cmd [Pipeline] { [Pipeline] sh [C:\cygwin64\home\build\workspace\myApp_sverre_work-3U54DPE57F6TMOZM2O6QBWDQ2LNRU2QHAXT6INC3UPGWF2ERMXAQ] Running shell script Cannot contact master-windows7-x86_64: java.io.IOException: Remote call on master-windows7-x86_64 failed + mvn clean install The build continues never the less with success, so I am not sure what failed here and what it tried to do on the remote node that caused the IOException. tirsdag 12. september 2017 10.51.46 UTC+2 skrev Cyrille Le Clerc følgende: > > Hello Svere, > > It seems that we have some work to make withMaven(){} more friendly to > Windows+Cygwin users. > > We have already tracked: > > - JENKINS-44089 Request that withMaven pipeline step produce both mvn > and mvn.cmd wrappers on Windows > <https://issues.jenkins-ci.org/browse/JENKINS-44089> > - JENKINS-44276 Maven fails in pipeline + cygwin > <https://issues.jenkins-ci.org/browse/JENKINS-44276> > > Some refactoring of the code will be needed to generate both standard > Windows and Cygwin friendly scripts on Windows agents. > > Please feel free to give us hints on what a smooth integration with > Windows and Cygwin should look like. > > Cyrille > > On Monday, September 11, 2017 at 9:08:53 AM UTC+2, Baptiste Mathus wrote: >> >> Hello, >> I know the developers of that plugin would like to make it as good as >> possible. To that, if so, could you please try and summarize what you think >> could be made easier/better? And even if possibly a config error, if you >> think the error could help more quickly understand what is wrong? >> >> Thanks! >> >> Le 11 sept. 2017 09:03, "Sverre Moe" <[email protected]> a écrit : >> >>> The fix was to set the Windows slave Remote Root Directory to Windows URI >>> C:\cygwin64\home\username >>> >>> mandag 11. september 2017 08.35.29 UTC+2 skrev Sverre Moe følgende: >>>> >>>> Well, adding a new JDK in Jenkins Tools pointing to the Windows path of >>>> Java worked >>>> Then withMaven(jdk: "jdk1.8-win") >>>> >>>> I have though hit another snag. Lots of ERROR after build success. >>>> ERROR: [withMaven] WARNING: Exception archiving and fingerprinting >>>> MavenArtifact{no.spacetec:myApp:jar:1.0.0-SNAPSHOT >>>> C:\home\username\workspace\myApp_username_work-3U54DPE57F6TMOZM2O6QBWDQ2LNRU2QHAXT6INC3UPGWF2ERMXAQ\target\myApp-1.0.0-SNAPSHOT.jar}, >>>> >>>> skip archiving of the artifacts >>>> >>>> ERROR: [withMaven] WARNING: Exception archiving and fingerprinting >>>> MavenArtifact{no.spacetec:myApp:rpm:1.0.0-SNAPSHOT >>>> C:\home\username\workspace\myApp_username_work-3U54DPE57F6TMOZM2O6QBWDQ2LNRU2QHAXT6INC3UPGWF2ERMXAQ\target\rpm\myApp-windows-installer\RPMS\noarch\myApp-windows-installer-1.0.0-SNAPSHOT20170911082120.noarch.rpm}, >>>> >>>> skip archiving of the artifacts >>>> >>>> ERROR: [withMaven] WARNING Exception executing Maven reporter 'Junit >>>> Publisher' / >>>> org.jenkinsci.plugins.pipeline.maven.publishers.JunitTestsPublisher. >>>> Please >>>> report a bug associated for the component 'pipeline-maven-plugin' at >>>> https://issues.jenkins-ci.org >>>> java.lang.IllegalArgumentException: Cannot relativize >>>> 'C:\home\username\workspace\myApp_username_work-3U54DPE57F6TMOZM2O6QBWDQ2LNRU2QHAXT6INC3UPGWF2ERMXAQ\target/surefire-reports' >>>> >>>> relatively to >>>> '/home/username/workspace/myApp_username_work-3U54DPE57F6TMOZM2O6QBWDQ2LNRU2QHAXT6INC3UPGWF2ERMXAQ' >>>> at >>>> org.jenkinsci.plugins.pipeline.maven.util.XmlUtils.getPathInWorkspace(XmlUtils.java:226) >>>> at >>>> org.jenkinsci.plugins.pipeline.maven.publishers.JunitTestsPublisher.executeReporter(JunitTestsPublisher.java:234) >>>> at >>>> org.jenkinsci.plugins.pipeline.maven.publishers.JunitTestsPublisher.process(JunitTestsPublisher.java:181) >>>> at org.jenkinsci.plugins.pipeline.maven.MavenSpyLogProcessor.pr >>>> ocessMavenSpyLogs(MavenSpyLogProcessor.java:109) >>>> at >>>> org.jenkinsci.plugins.pipeline.maven.WithMavenStepExecution$Callback.finished(WithMavenStepExecution.java:864) >>>> at >>>> org.jenkinsci.plugins.workflow.steps.BodyExecutionCallback$TailCall.onSuccess(BodyExecutionCallback.java:114) >>>> at >>>> org.jenkinsci.plugins.workflow.cps.CpsBodyExecution$SuccessAdapter.receive(CpsBodyExecution.java:362) >>>> at com.cloudbees.groovy.cps.Outcome.resumeFrom(Outcome.java:73) >>>> at com.cloudbees.groovy.cps.Continuable$1.call(Continuable.java:165) >>>> at com.cloudbees.groovy.cps.Continuable$1.call(Continuable.java:162) >>>> at org.codehaus.groovy.runtime.Gr >>>> oovyCategorySupport$ThreadCategoryInfo.use(GroovyCategorySupport.java:122) >>>> at org.codehaus.groovy.runtime.Gr >>>> oovyCategorySupport.use(GroovyCategorySupport.java:261) >>>> at com.cloudbees.groovy.cps.Continuable.run0(Continuable.java:162) >>>> at >>>> org.jenkinsci.plugins.workflow.cps.SandboxContinuable.access$001(SandboxContinuable.java:19) >>>> at >>>> org.jenkinsci.plugins.workflow.cps.SandboxContinuable$1.call(SandboxContinuable.java:35) >>>> at >>>> org.jenkinsci.plugins.workflow.cps.SandboxContinuable$1.call(SandboxContinuable.java:32) >>>> at >>>> org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.GroovySandbox.runInSandbox(GroovySandbox.java:108) >>>> at >>>> org.jenkinsci.plugins.workflow.cps.SandboxContinuable.run0(SandboxContinuable.java:32) >>>> at >>>> org.jenkinsci.plugins.workflow.cps.CpsThread.runNextChunk(CpsThread.java:174) >>>> at >>>> org.jenkinsci.plugins.workflow.cps.CpsThreadGroup.run(CpsThreadGroup.java:330) >>>> at >>>> org.jenkinsci.plugins.workflow.cps.CpsThreadGroup.access$100(CpsThreadGroup.java:82) >>>> at >>>> org.jenkinsci.plugins.workflow.cps.CpsThreadGroup$2.call(CpsThreadGroup.java:242) >>>> at >>>> org.jenkinsci.plugins.workflow.cps.CpsThreadGroup$2.call(CpsThreadGroup.java:230) >>>> at >>>> org.jenkinsci.plugins.workflow.cps.CpsVmExecutorService$2.call(CpsVmExecutorService.java:64) >>>> at java.util.concurrent.FutureTask.run(FutureTask.java:266) >>>> at >>>> hudson.remoting.SingleLaneExecutorService$1.run(SingleLaneExecutorService.java:112) >>>> at >>>> jenkins.util.ContextResettingExecutorService$1.run(ContextResettingExecutorService.java:28) >>>> at >>>> java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) >>>> at java.util.concurrent.FutureTask.run(FutureTask.java:266) >>>> at >>>> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) >>>> at >>>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) >>>> at java.lang.Thread.run(Thread.java:745) >>>> >>>> ERROR: [withMaven] WARNING Exception executing Maven reporter 'Open >>>> Task Scanner Publisher' / >>>> org.jenkinsci.plugins.pipeline.maven.publishers.TasksScannerPublisher. >>>> Please report a bug associated for the component 'pipeline-maven-plugin' >>>> at >>>> https://issues.jenkins-ci.org >>>> >>>> It would seem it is unable to use the "correct" home directory as >>>> Windows is using Cygwin. >>>> >>>> >>>> mandag 11. september 2017 08.18.38 UTC+2 skrev Sverre Moe følgende: >>>>> >>>>> I took a look at the Maven Pipeline documentation again. >>>>> For Windows it says to use bat, not sh. I tried that, and got a little >>>>> bit closer, but now it cannot find JAVA_HOME >>>>> >>>>> ----- withMaven Wrapper script ----- >>>>> >>>>> Error: JAVA_HOME is set to an invalid directory. >>>>> JAVA_HOME = "/usr/java/jdk1.8.0_102" >>>>> Please set the JAVA_HOME variable in your environment to match the >>>>> location of your Java installation. >>>>> >>>>> >>>>> Jenkins have jdk set at /usr/java/jdk1.8.0_102 and I have created a >>>>> symlink in my Cygwin >>>>> jdk1.8.0_102 -> /cygdrive/c/Program Files/Java/jdk1.8.0_121 >>>>> Windows environment variable JAVA_HOME is set to C:\Program >>>>> Files\Java\jdk1.8.0_121 >>>>> >>>>> mandag 11. september 2017 08.07.21 UTC+2 skrev Sverre Moe følgende: >>>>>> >>>>>> I have connected a Windows slave to Jenkins with SSH+Cygwin. >>>>>> So running shell scripts like "sh 'mvn'" should work as I do it >>>>>> locally on the Windows. >>>>>> >>>>>> Running withMaven fails, and I cannot figure our why. >>>>>> >>>>>> [Pipeline] node >>>>>> Running on master-windows-x86_64 in >>>>>> /home/username/workspace/myApp_username_work-3U54DPE57F6TMOZM2O6QBWDQ2LNRU2QHAXT6INC3UPGWF2ERMXAQ >>>>>> [Pipeline] { >>>>>> [Pipeline] stage >>>>>> [Pipeline] { (Checkout-Windows) >>>>>> [Pipeline] checkout >>>>>> > git rev-parse --is-inside-work-tree # timeout=10 >>>>>> Fetching changes from the remote Git repository >>>>>> > git config remote.origin.url ssh:// >>>>>> [email protected]/software/myApp.git # timeout=10 >>>>>> Fetching without tags >>>>>> Fetching upstream changes from ssh:// >>>>>> [email protected]/software/myApp.git >>>>>> > git --version # timeout=10 >>>>>> > git fetch --no-tags --progress ssh:// >>>>>> [email protected]/software/myApp.git >>>>>> +refs/heads/*:refs/remotes/origin/* >>>>>> Checking out Revision 05cf171deb903a01b5880c30de28d4b1865e3ed5 >>>>>> (username/work) >>>>>> Commit message: "Test Windows build on Jenkins" >>>>>> > git config core.sparsecheckout # timeout=10 >>>>>> > git checkout -f 05cf171deb903a01b5880c30de28d4b1865e3ed5 >>>>>> > git rev-list f9db8914f5688ca74e571dd1104c279f207bf435 # timeout=10 >>>>>> [Pipeline] } >>>>>> [Pipeline] // stage >>>>>> [Pipeline] stage >>>>>> [Pipeline] { (Build-Windows) >>>>>> [Pipeline] withMaven >>>>>> [withMaven] Options: [] >>>>>> [withMaven] Available options: >>>>>> [withMaven] use JDK installation jdk1.8 >>>>>> $ where mvn.cmd >>>>>> [withMaven] use Maven installation provided by the build agent with >>>>>> executable >>>>>> C:\Users\username.POLAR\Downloads\apache-maven-3.3.9-bin\apache-maven-3.3.9\bin\mvn.cmd >>>>>> [Pipeline] { >>>>>> [Pipeline] sh >>>>>> [myApp_username_work-3U54DPE57F6TMOZM2O6QBWDQ2LNRU2QHAXT6INC3UPGWF2ERMXAQ] >>>>>> >>>>>> Running shell script >>>>>> sh: >>>>>> /home/username/workspace/myApp_username_work-3U54DPE57F6TMOZM2O6QBWDQ2LNRU2QHAXT6INC3UPGWF2ERMXAQ@tmp/durable-ff9c24b3/pid: >>>>>> >>>>>> No such file or directory >>>>>> sh: >>>>>> /home/username/workspace/myApp_username_work-3U54DPE57F6TMOZM2O6QBWDQ2LNRU2QHAXT6INC3UPGWF2ERMXAQ@tmp/durable-ff9c24b3/jenkins-log.txt: >>>>>> >>>>>> No such file or directory >>>>>> sh: >>>>>> /home/username/workspace/myApp_username_work-3U54DPE57F6TMOZM2O6QBWDQ2LNRU2QHAXT6INC3UPGWF2ERMXAQ@tmp/durable-ff9c24b3/jenkins-result.txt: >>>>>> >>>>>> No such file or directory >>>>>> >>>>>> >>>>>> -- >>> 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 [email protected]. >>> To view this discussion on the web visit >>> https://groups.google.com/d/msgid/jenkinsci-users/5da9746b-17c9-47b7-ab1e-88f32b0416f2%40googlegroups.com >>> >>> <https://groups.google.com/d/msgid/jenkinsci-users/5da9746b-17c9-47b7-ab1e-88f32b0416f2%40googlegroups.com?utm_medium=email&utm_source=footer> >>> . >>> For more options, visit https://groups.google.com/d/optout. >>> >> -- 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 [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/jenkinsci-users/14497211-6028-4892-af63-bbf0c7e0a234%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.
