Jenkins konnte Cygwin nicht finden

1626
Richard

Mein Jenkins-Job schlägt fehl, da folgende Fehlermeldung angezeigt wird:

hudson.util.IOException2: Failed to locate Cygwin installation. Is Cygwin installed? at hudson.plugins.cygpath.CygpathLauncherDecorator$GetCygpathTask.getCygwinRoot(CygpathLauncherDecorator.java:138) at hudson.plugins.cygpath.CygpathLauncherDecorator$GetCygpathTask.call(CygpathLauncherDecorator.java:142) at hudson.plugins.cygpath.CygpathLauncherDecorator$GetCygpathTask.call(CygpathLauncherDecorator.java:112) at hudson.remoting.LocalChannel.call(LocalChannel.java:45) at hudson.plugins.cygpath.CygpathLauncherDecorator$1.getCygpathExe(CygpathLauncherDecorator.java:104) at hudson.plugins.cygpath.CygpathLauncherDecorator$1.cygpath(CygpathLauncherDecorator.java:86) at hudson.plugins.cygpath.CygpathLauncherDecorator$1.launch(CygpathLauncherDecorator.java:65) at hudson.Launcher$ProcStarter.start(Launcher.java:381) at hudson.tasks.CommandInterpreter.perform(CommandInterpreter.java:97) at hudson.tasks.CommandInterpreter.perform(CommandInterpreter.java:66) at hudson.tasks.BuildStepMonitor$1.perform(BuildStepMonitor.java:20) at hudson.model.AbstractBuild$AbstractBuildExecution.perform(AbstractBuild.java:770) at hudson.model.Build$BuildExecution.build(Build.java:199) at hudson.model.Build$BuildExecution.doRun(Build.java:160) at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:533) at hudson.model.Run.execute(Run.java:1759) at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:43) at hudson.model.ResourceController.execute(ResourceController.java:89) at hudson.model.Executor.run(Executor.java:240) Caused by: hudson.util.jna.JnaException: Win32 error: 2 - The system cannot find the file specified at hudson.util.jna.RegistryKey.check(RegistryKey.java:124) at hudson.util.jna.RegistryKey.open(RegistryKey.java:223) at hudson.util.jna.RegistryKey.openReadonly(RegistryKey.java:218) at hudson.plugins.cygpath.CygpathLauncherDecorator$GetCygpathTask.getCygwinRoot(CygpathLauncherDecorator.java:127) ... 18 more 

Ich laufe Jenkins unter Windows und möchte die Skripte in diesem Github-Repo ausführen: https://github.com/y0u-s/test

Ich habe den Jenkins Shell-Programmpfad auf C: \ cygwin64 \ bin \ bash gesetzt

Ich bin jetzt fest damit beschäftigt, was kann ich tun, um dieses Problem zu lösen?

1
Fügen Sie die cygwin-DLL irgendwo in den Pfad ein. Romeo Ninov vor 9 Jahren 0
In meinen Windows-Systemvariablen oder in der Jenkins-Konfiguration? Und welche DLL-Datei? Cygwin1.dll? Richard vor 9 Jahren 0
Soweit ich weiß, verwenden Jenkins Windows PATHs, also setzen Sie die Datei cygwin1.dll in PATH oder in dasselbe Verzeichnis, in dem sich Jenkins jar befindet Romeo Ninov vor 9 Jahren 0
Nein, ich bekomme immer noch die Fehlermeldung. Könnte es etwas anderes sein? Richard vor 9 Jahren 0
Haben Sie dieses Plugin ausprobiert: https://wiki.jenkins-ci.org/display/JENKINS/Cygpath+Plugin Romeo Ninov vor 9 Jahren 0
Ja das habe ich schon heruntergeladen. Richard vor 9 Jahren 0
Überprüfen Sie diese Diskussion: http://stackoverflow.com/questions/731705/can-i-use-cygwin-to-script-a-hudson-build-step Romeo Ninov vor 9 Jahren 0
Ich habe diese Diskussion bereits gesehen, aber ich weiß nicht genau, ob ich: '#! / Bin / sh ls $ ' wörtlich über dem Skript stehen muss. Oder welches Verzeichnis sollte ich in WORKSPACE einfügen? Richard vor 9 Jahren 0
WORKSPACE wird von Jenkins festgelegt. Und es zeigt auf das Arbeitsverzeichnis des Jobs, den Sie ausführen Romeo Ninov vor 9 Jahren 0
Könnten Sie bitte mein Git-Projekt überprüfen und mir zeigen, was ich in meinem Fall tun kann? Bitte ertragen Sie mich als Anfänger :) Richard vor 9 Jahren 0
Richard, warum fangen Sie nicht an, nur mit CMD zu arbeiten. Sie haben bereits einige cmd-Skripte für Mokka. Für das Deploy-Skript gibt es in Jenkins ein gutes Skript, das Sie sicherlich verwenden können Romeo Ninov vor 9 Jahren 0
Weil ich einem Tutorial gefolgt bin, das anscheinend auf Linux basiert. http://code.tutsplus.com/tutorials/setting-up-continuous-integration-continuous-deployment-with-jenkins--cms-21511. Was meinst du mit dem letzten Teil? Danke für Ihre Hilfe übrigens Richard vor 9 Jahren 0
Wenn Sie den Bereitstellungsprozess meinen, ist dies nicht so kompliziert. Erstellen Sie auf dem Zielserver ein Skript mit allen Befehlen nach ssh und vor EOF. Und führen Sie es auf diesem Weg aus: ssh user @ host -c /path/to/the/script/on/remote/host/script.sh. Dies wird also der Befehl zum Bereitstellen sein Romeo Ninov vor 9 Jahren 0
Ich habe bereits so etwas in meinem Bereitstellungsordner, wie Sie im Repo sehen können Richard vor 9 Jahren 0

1 Antwort auf die Frage

0
John Duskin

OK, ich werde diese Lösung an einigen Stellen veröffentlichen, da dies für mich funktioniert hat und dieses Problem in einigen Fragen erscheint. Leider erfordert die Lösung einige Registrierungsbearbeitung.

TLDR-Lösung:

- Make sure cygwin is installed - Open regedit. - Go to HKEY_LOCAL_MACHINE - SOFTWARE - Wow6432Node - Right click on Wow6432Node New->Key name it Cygwin - Right click on Cygwin New->Key name it setup - Right click on setup New->String Value name it rootdir - Right click on rootdir Modify set it to your cygwin folder mine was "C:\cygwin64" 

Die Begründung

https://github.com/jenkinsci/cygpath-plugin/blob/master/src/main/java/hudson/plugins/cygpath/CygpathLauncherDecorator.java

Ist der Jenkins-Code, wie er Cygwin findet. Zeile 115 ist der Beginn einer for-Schleife, in der sie anfänglich in SOFTWARE \ Wow6432Node und dann in SOFTWARE nach dem Cygwin-Verzeichnis sucht. In meinem Fall hatte ich bereits "SOFTWARE \ Cygwin \ setup \ rootdir" Es scheint nur nicht in der Lage zu sein, es zu finden. Es besteht die Gefahr, dass die Schleife vorzeitig beendet wird oder das SOFTWARE-Verzeichnis nicht ordnungsgemäß überprüft wird. Verwendung der Lösung Oben ist eine unangenehme Arbeit an diesem Problem.