Ich habe eine Jenkins-Instanz, die eine Windows-Slave-Maschine angeschlossen hat. Ich habe auch einen Job, der in github läuft und ich habe den Auslöser - "Build, wenn eine Änderung an GitHub" gesetzt wird.Github-Jenkins Trigger-Problem mit Slave
als ich eine Änderung an Github, gibt es keinen Build ausgelöst auf Jenkins. Ich überprüfen und sehen, dass die Nutzlast zu jenkins in der „Github Haken log“ tranferred bekommt, aber ich erhalte den folgenden Fehler:
Started on Sep 18, 2014 3:57:06 PM
Using strategy: Default
[poll] Last Built Revision: Revision ce6a183e834a3e31afa0eb83a4418b0619c8642b (origin/master)
> "C:\Program Files (x86)\Git\cmd\git.exe" ls-remote -h https://xx/xx/xx master # timeout=10
FATAL: hudson.plugins.git.GitException: Error performing command: "C:\Program Files (x86)\Git\cmd\git.exe" ls-remote -h https://xx/xx/xx master
hudson.util.IOException2: hudson.plugins.git.GitException: Error performing command: "C:\Program Files (x86)\Git\cmd\git.exe" ls-remote -h https://xx/xx/xx master
at hudson.plugins.git.GitSCM.compareRemoteRevisionWith(GitSCM.java:462)
at hudson.scm.SCM._compareRemoteRevisionWith(SCM.java:357)
at hudson.scm.SCM.poll(SCM.java:374)
at hudson.model.AbstractProject._poll(AbstractProject.java:1428)
at hudson.model.AbstractProject.poll(AbstractProject.java:1331)
at com.cloudbees.jenkins.GitHubPushTrigger$1.runPolling(GitHubPushTrigger.java:73)
at com.cloudbees.jenkins.GitHubPushTrigger$1.run(GitHubPushTrigger.java:98)
at hudson.util.SequentialExecutionQueue$QueueEntry.run(SequentialExecutionQueue.java:118)
at jenkins.util.ContextResettingExecutorService$1.run(ContextResettingExecutorService.java:28)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
at java.util.concurrent.FutureTask.run(FutureTask.java:262)
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:744)
Caused by: hudson.plugins.git.GitException: Error performing command: "C:\Program Files (x86)\Git\cmd\git.exe" ls-remote -h https://xx/xx/xx master
at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1444)
at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandWithCredentials(CliGitAPIImpl.java:1225)
at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandWithCredentials(CliGitAPIImpl.java:1138)
at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandWithCredentials(CliGitAPIImpl.java:1129)
at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.getHeadRev(CliGitAPIImpl.java:2059)
at hudson.plugins.git.GitSCM.compareRemoteRevisionWithImpl(GitSCM.java:495)
at hudson.plugins.git.GitSCM.compareRemoteRevisionWith(GitSCM.java:460)
... 13 more
Caused by: java.io.IOException: Cannot run program ""C:\Program Files (x86)\Git\cmd\git.exe"": error=2, No such file or directory
at java.lang.ProcessBuilder.start(ProcessBuilder.java:1041)
at hudson.Proc$LocalProc.<init>(Proc.java:244)
at hudson.Proc$LocalProc.<init>(Proc.java:216)
at hudson.Launcher$LocalLauncher.launch(Launcher.java:780)
at hudson.Launcher$ProcStarter.start(Launcher.java:360)
at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1433)
... 19 more
Caused by: java.io.IOException: error=2, No such file or directory
at java.lang.UNIXProcess.forkAndExec(Native Method)
at java.lang.UNIXProcess.<init>(UNIXProcess.java:135)
at java.lang.ProcessImpl.start(ProcessImpl.java:130)
at java.lang.ProcessBuilder.start(ProcessBuilder.java:1022)
... 24 more
Grundsätzlich beschwert sich über den Befehl nicht ausführen zu können C:\Program Files (x86)\Git\cmd\git.exe" ls-remote -h https://xx/xx/xx master
Aber als Ich manuell in meinen Slave-Maschine gehen und den Befehl ausführen, es funktioniert gut.
Bitte beachten Sie, dass 1. Ich habe die Anpassung wo jenkins Slave-Dienst als Administrator angemeldet, so dass es alle Berechtigungen hat. 2. Mein Standard-Jenkins-Server ist eine Linux-Box und die Slave-Maschine ist eine Windows-Box. Offensichtlich haben beide einen anderen git ausführbaren Pfad. Ich frage mich, ob Jenkins diesen Befehl aus irgendeinem Grund auf meiner Linux-Box ausführt.
ich das Projekt Setup nur auf der Windows-Slave-Box laufen und das funktioniert gut, wie es fein baut (so ist es in der Lage, die git ausführbare Datei für den Job zu finden)
Alle Zeiger?
Auch jemand weiß, wie Github-Plugin für Jenkins arbeitet mit Slave-Maschinen (sucht es nach Git im Slave oder geht es zu wo Jenkins wohnt, wie das die Quelle sein könnte, obwohl keine Ahnung, was die Lösung für dieser seltsame Fall wäre?)