Używam Hudson wersji 1.324 dla CI i mam kilka problemów:Jak zmusić system Hudson CI do wykonywania skryptu Powershell?
Środowisko:
- Windows Server 2008
- PowerShell v1.0
- Hudson 1.324 działa jako usługa
- Zainstalowana wtyczka Hudson Powershell
- Psake (znana również jako "Powershell Make/Rake" dostępna od Githuba) 0.23 (Wszystkie bieżące/najnowsze wersje poczynając od tej początkowej post)
Mam PowerShell (PS) skrypt, który działa skompilować, uruchomić testy NUnit, i jeśli się powiedzie, utwórz plik 7z wyjścia. Skrypt PS działa z poziomu wiersza poleceń, zarówno w moim lokalnym środowisku programistycznym, jak i na serwerze CI, na którym jest zainstalowany Hudson.
1) Zasady realizacji z Powershell.
Najpierw uruchomiłem konsolę PS na serwerze, uruchomiłem Set-ExecutionPolicy Unrestricted
, co pozwala na uruchomienie dowolnego skryptu. (Tak, zdaję sobie sprawę z obaw związanych z bezpieczeństwem, próbuję uzyskać coś do roboty, a Nieograniczony powinien usunąć problemy bezpieczeństwa, aby móc skupić się na innych problemach.)
[To zadziałało i pozwoliło mi wystrzelić Scenariusz PS build od Hudsona wczoraj. . Wtedy napotkał inny problem, ale omówimy, że więcej w punkcie # 2]
Po Hudson mogła wystrzelić skrypt PS, to skarżył się z powodu następującego błędu:
"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'"
Stosując tę samą komendę line, jestem w stanie ręcznie wykonać skrypt PS z linii poleceń ręcznie. Jednak Hudson nie jest w stanie zmusić PS do tego samego. Po zapoznaniu się z dodatkową dokumentacją PS próbowałem również:
"& 'OzSystems.Tools\psake\psake.ps1' '.\oz-build.ps1'"
i otrzymałem podobny błąd. Wydaje się, że nie ma żadnej dokumentacji wtyczki Powershell dla Hudsona. Przejrzałem wszystkie pliki wtyczek Powershell i nie widzę niczego konfigurowalnego. Nie mogę znaleźć pliku dziennika dla Hudsona, aby uzyskać dodatkowe informacje.
Czy ktoś może mi pomóc po tym?
2) Spędziłem wczoraj wrestling z # 1. Przyszedłem w to AM i próbowałem zagłębić się ponownie, po ponownym uruchomieniu serwera/usługi Hudson, a teraz wygląda na to, że ExecutionPolicy został zresetowany do Restricted. Zrobiłem to, co działało wczoraj, otworzyłem konsolę PS i Set-ExecutionPolicy
na Unrestricted
. Pokazuje on Unrestricted
w konsoli PS, ale Hudson twierdzi, że nie ma uprawnień do wykonywania skryptów PS. Ponownie otworzyłem nową konsolę PS i potwierdziłem, że ExecutionPolicy
nadal jest Unrestriced
- to jest. Ale Hudson najwyraźniej nie jest świadomy tej zmiany. Ponowne uruchomienie usługi Hudson ponownie nie zmienia poglądu Hudsona na politykę.
Czy ktoś wie, co się tutaj dzieje?
Dzięki, Derek
Występuje dokładnie ten sam problem. Szczerze mówiąc, to, jak ta moc jest podobna do basha, jest poza mną. Za dużo bezpieczeństwa! – stimms
Przechodzenie przez bolesny proces podpisywania skryptu (http://www.hanselman.com/blog/SigningPowerShellScripts.aspx) nie pomogło. FYI. – stimms
Upewnij się, że nie ustawiłeś opcji -polecenia dla narzędzia -Scope CurrentUser zamiast -Scope LocalMachine ... i upewnij się, że Hudson nie próbuje uruchomić twoich kompilacji na innym kliencie;) – Jaykul