Ich verwende Hudson Version 1.324 für CI und ein paar Probleme haben:Wie bekomme ich Hudson CI, um ein PowerShell-Skript auszuführen?
Umwelt:
- Windows Server 2008
- Powershell v1.0
- Hudson 1.324 als ein Laufen Service
- Hudson Powershell Plugin installiert
- Psake (aka. "Powershell Make/Rake" erhältlich von Github) 0.23 (Alle aktuellen/neuesten Versionen ab diesem ersten Beitrag)
Ich habe ein Skript, Powershell (PS), die, laufen NUnit Tests, und wenn sie erfolgreich sind, erstellen Sie eine 7z-Datei der Ausgabe zu kompilieren funktioniert. Das PS-Skript funktioniert über die Befehlszeile sowohl in meiner lokalen Entwicklungsumgebung als auch auf dem CI-Server, auf dem Hudson installiert ist.
1) Ausführungsrichtlinie mit Powershell.
Ich startete zunächst eine PS-Konsole auf dem Server, lief Set-ExecutionPolicy Unrestricted
, die jedes Skript ausgeführt werden kann. (Ja, ich verstehe die Sicherheitsbedenken hier, ich versuche, etwas zur Arbeit zu bringen, und Unrestricted sollte die Sicherheitsprobleme entfernen, damit ich mich auf andere Probleme konzentrieren kann.)
[Das funktionierte, und erlaubte mir, das abzufeuern PS Build-Skript von Hudson gestern. . Ich habe dann ein weiteres Problem gestoßen, aber wir werden in Artikeln # 2, dass mehr diskutieren]
Sobald Hudson eine PS-Skript abfeuern konnte, beschwerte es mit dem folgenden Fehler:
"C:\Windows\system32\WindowsPowerShell\v1.0\powershell "& 'OzSystems.Tools\psake\psake.ps1' '.\oz-build.ps1'" The term 'OzSystems.Tools\psake\psake.ps1' is not recognized as a cmdlet, funct ion, operable program, or script file. Verify the term and try again. At line:1 char:2 + & <<<< 'OzSystems.Tools\psake\psake.ps1' '.\oz-build.ps1'"
den gleichen Befehl verwenden Ich bin in der Lage, das PS-Skript von der Kommandozeile aus erfolgreich auszuführen. Hudson kann PS jedoch nicht dazu bringen, dasselbe zu tun. Nach dem Blick auf zusätzliche PS-Dokumentation habe ich auch versucht, diese:
und bekam einen ähnlichen Fehler. Es scheint keine Dokumentation für das Powershell-Plugin für Hudson zu geben. Ich habe alle Powershell-Plugin-Dateien durchgesehen und sehe nichts, was konfigurierbar ist. Ich kann keine Protokolldatei für Hudson finden, um zusätzliche Informationen zu erhalten.
Kann mir jemand dabei helfen?
2) Ich verbrachte gestern Wrestling mit # 1. Ich kam in diesem AM und versuchte, nach dem Neustart des Hudson-Servers/Dienstes erneut zu graben, und jetzt scheint es, dass die ExecutionPolicy auf Restricted zurückgesetzt wurde. Ich habe getan, was gestern funktioniert hat, eine PS-Konsole und Set-ExecutionPolicy
zu Unrestricted
geöffnet. Es zeigt Unrestricted
in der PS-Konsole, aber Hudson sagt, dass es keine Rechte für die Ausführung von PS-Skripten hat. Ich öffnete eine neue PS-Konsole und bestätigte, dass die ExecutionPolicy
immer noch Unrestriced
ist - es ist. Aber Hudson ist sich dieser Veränderung offensichtlich nicht bewusst. Wenn Sie den Hudson-Dienst erneut starten, ändert dies nichts an Hudsons Ansicht der Richtlinie.
Weiß jemand, was hier vor sich geht?
Danke, Derek
Ich laufe auf genau das gleiche Problem. Ehrlich, wie diese Powershell-Sache mit bash vergleichbar sein soll, ist mir ein Rätsel. Zu viel Sicherheit! – stimms
Es hat nicht geholfen, den schmerzhaften Prozess zu durchlaufen, der das Skript signiert (http://www.hanselman.com/blog/SigningPowerShellScripts.aspx). FYI. – stimms
Stellen Sie sicher, dass Sie die Ausführungspolicy für den Scope CurrentUser nicht anstelle von Scope LocalMachine festgelegt haben und stellen Sie sicher, dass Hudson nicht versucht, Ihre Builds auf einem anderen Client auszuführen;) – Jaykul