estoy usando Hudson versión 1.324 de CI y tienen un par de cuestiones:¿Cómo hacer que Hudson CI ejecute un script de Powershell?
Medio Ambiente:
- Windows Server 2008
- Powershell v1.0
- Hudson 1.324 ejecuta como un servicio
- Hudson Powershell Plugin instalado
- Psake (también conocido como "Powershell Make/Rake" disponible en Github) 0.23 (Todos los/las últimas versiones actuales de este post inicial)
que tienen una secuencia de comandos de PowerShell (PS) que funciona para compilar, ejecutar pruebas NUnit, y si tiene éxito, crear un archivo 7z de la salida. La secuencia de comandos de PS funciona desde la línea de comandos, tanto en mi cuadro de desarrollo local como en el servidor de CI donde está instalado Hudson.
1) Política de ejecución con Powershell.
Inicialmente ejecuté una consola PS en el servidor, ejecuté Set-ExecutionPolicy Unrestricted
, lo que permite que se ejecute cualquier secuencia de comandos. (Sí, me doy cuenta de las preocupaciones de seguridad aquí, estoy tratando de hacer que algo funcione y sin restricciones debería eliminar los problemas de seguridad para poder concentrarme en otros problemas).
[Esto funcionó, y me permitió disparar Script de compilación PS de Hudson ayer. . Entonces me encontré con otro problema, pero vamos a discutir más que en el artículo # 2]
Una vez Hudson podría disparar una secuencia de comandos PS, se quejó con el siguiente error:
"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'"
Usando el mismo comando línea, puedo ejecutar con éxito el script PS desde la línea de comando de forma manual. Sin embargo, Hudson no puede hacer que PS haga lo mismo. Después de buscar en la documentación adicional PS también probé esto:
"& 'OzSystems.Tools\psake\psake.ps1' '.\oz-build.ps1'"
y ha dado un error similar. No parece haber ninguna documentación para el complemento Powershell para Hudson. Revisé todos los archivos del complemento Powershell y no veo nada configurable. No puedo encontrar un archivo de registro para que Hudson obtenga información adicional.
¿Alguien puede ayudarme a superar esto?
2) Pasé ayer luchando con # 1. Vine en este AM y traté de volver a indagar, luego de reiniciar el servidor/servicio de Hudson, y ahora parece que ExecutionPolicy se ha restablecido a Restringido. Hice lo que funcionó ayer, abrí una consola PS y Set-ExecutionPolicy
a Unrestricted
. Muestra Unrestricted
en la consola PS, pero Hudson dice que no tiene derechos para ejecutar scripts PS. Volví a abrir una nueva consola PS y confirmé que el ExecutionPolicy
sigue siendo Unrestriced
- lo es. Pero Hudson, evidentemente, no está al tanto de este cambio. Reiniciar nuevamente el servicio de Hudson no cambia la visión de la política de Hudson.
¿Alguien sabe lo que está pasando aquí?
Gracias, Derek
Me encuentro con exactamente el mismo problema. Honestamente, cómo se supone que esta cosa de poder es comparable a bash está más allá de mí. Demasiada seguridad! – stimms
Pasar por el doloroso proceso que está firmando el script (http://www.hanselman.com/blog/SigningPowerShellScripts.aspx) no ayudó. FYI. – stimms
Asegúrese de que no estableció de alguna manera-executionpolicy para el -Scope CurrentUser en lugar de -Scope LocalMachine ... y asegúrese de que Hudson no está tratando de ejecutar sus compilaciones en otro cliente;) – Jaykul