Sto usando Hudson versione 1.324 per CI e hanno un paio di questioni:Come ottenere Hudson CI per eseguire uno script PowerShell?
Ambiente:
- Windows Server 2008
- PowerShell v1.0
- Hudson 1.324 esecuzione come servizio
- Hudson Powershell Plugin installato
- Psake (aka "Powershell Make/Rake" disponibile da Github) 0.23 (Tutte le attuali/versioni più recenti come di questo post iniziale)
Ho uno script PowerShell (PS) che lavora per la compilazione, test NUnit correre, e in caso di successo, creare un file 7z dell'uscita. Lo script PS funziona dalla riga di comando, sia sulla mia casella di sviluppo locale, sia sul server CI su cui è installato Hudson.
1) Politica di esecuzione con PowerShell.
Inizialmente ho eseguito una console PS sul server, ho eseguito Set-ExecutionPolicy Unrestricted
, che consente di eseguire qualsiasi script. (Sì, mi rendo conto dei problemi di sicurezza qui, sto cercando di far funzionare qualcosa e Unrestricted dovrebbe rimuovere i problemi di sicurezza in modo da potermi concentrare su altri problemi.)
[Questo ha funzionato e mi ha permesso di sparare Script di costruzione PS di Hudson ieri. . Poi ho incontrato un altro problema, ma ne parleremo più al punto # 2]
volta Hudson potrebbe sparare uno script PS, si lamentò con il seguente errore:
"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'"
Utilizzando lo stesso comando linea, sono in grado di eseguire manualmente lo script PS dalla riga di comando. Tuttavia, Hudson non è in grado di convincere PS a fare lo stesso. Dopo aver esaminato la documentazione PS aggiuntiva, ho provato anche questo:
"& 'OzSystems.Tools\psake\psake.ps1' '.\oz-build.ps1'"
e si è verificato un errore simile. Non sembra esserci alcuna documentazione per il plugin PowerShell per Hudson. Ho esaminato tutti i file di plug-in di PowerShell e non vedo nulla che sia configurabile. Non riesco a trovare un file di registro per Hudson per ottenere ulteriori informazioni.
Qualcuno può aiutarmi a superare questo?
2) Ho passato ieri a lottare con il numero 1. Sono arrivato in questo AM e ho cercato di scavare di nuovo, dopo aver riavviato il server/servizio Hudson, e ora sembra che ExecutionPolicy sia stato reimpostato su Restricted. Ho fatto ciò che ha funzionato ieri, ho aperto una console PS e Set-ExecutionPolicy
a Unrestricted
. Mostra Unrestricted
nella console PS, ma Hudson dice che non ha diritti per l'esecuzione di script PS. Ho riaperto una nuova console PS e ho confermato che lo ExecutionPolicy
è ancora Unrestriced
- lo è. Evidentemente Hudson non è consapevole di questo cambiamento. Riavviare di nuovo il servizio Hudson non cambia la visione di Hudson della politica.
Qualcuno sa cosa sta succedendo qui?
Grazie, Derek
Sto correndo nello stesso identico problema. Onestamente come questa cosa PowerShell sia supposta essere paragonabile a bash è al di là di me. Troppa sicurezza! – stimms
Passare attraverso il processo doloroso che sta firmando lo script (http://www.hanselman.com/blog/SigningPowerShellScripts.aspx) non ha aiutato. FYI. – stimms
Assicurati di non impostare set-executionpolicy per -Scope CurrentUser invece di -Scope LocalMachine ... e assicurati che Hudson non stia cercando di eseguire i tuoi build su un altro client;) – Jaykul