6

Ho alcuni semplici script PowerShell che ho trasformato in eseguibili con Bamboo, aggiungendo un percorso come C:\build-scripts\bamboo-build-scripts\clear-directory.ps1 come percorso dell'eseguibile per una nuova capacità in bambù.Script di PowerShell come eseguibile che dà "errato" restituendo il codice di ritorno -1 in Bamboo

Tuttavia, diversi script, anche quelli che vengono eseguiti correttamente nel processo di compilazione quando vengono creati come un processo di "script", falliscono quando vengono eseguiti in questo modo, dando il codice di ritorno -1. Ecco un esempio del log di compilazione:

simple 18-Jun-2015 13:14:06 Failing task since return code of [C:\build-scripts\bamboo-build-scripts\update-checker.ps1 GeometryClassLibrary] was -1 while expected 0 

Ciò si verifica con più script PowerShell, e fa sì che il resto della procecss accumulo a fallire.

Ecco uno script PowerShell esempio, che eseguo passando l'argomento in una directory:

Remove-Item $args[0] -Force -Recurse 
[io.directory]::CreateDirectory($args[0]) 

C'è qualcosa che ho bisogno di aggiungere allo script PowerShell per farlo uscire con il codice corretto? O non sto definendo l'eseguibile correttamente in Bamboo?

+0

Il supporto di Bamboo per PowerShell mi sembrava incerto nel mio uso limitato come compito di script. –

+0

Abbiamo avuto un discreto successo nell'usarlo nei compiti di script, ma dal momento che alcuni dei nostri script erano diventati più complessi, sembrava opportuno passare a un file eseguibile e passare separatamente. Ecco dove è sorto il problema: gli script funzionavano bene prima come compiti di script. – Jake

+0

Ho visto che ignora gli errori (gli errori lanciati che vengono visualizzati nel registro) e continua durante l'esecuzione dello script in precedenza. L'aggiunta di una modalità rigorosa e l'impostazione manuale di EA hanno contribuito un po 'a quello che penso comunque. –

risposta

0

Si può provare un paio di cose:

Execution Policy

Potrebbe essere che gli script non sono in esecuzione a tutti, forse perché la politica è impostato per non eseguirli. Prova invocando powershell.exe direttamente:

powershell.exe -ExecutionPolicy Bypass -File C:\build-scripts\bamboo-build-scripts\clear-directory.ps1 

(see this answer for more switches)

Piping

NSClient ++ usato per avere problemi con invocando controlli scritto in PowerShell causa di problemi con il codice di uscita. La loro soluzione assomigliava a questa:

cmd /c echo C:\build-scripts\bamboo-build-scripts\clear-directory.ps1; exit $LastExitCode | powershell.exe -Command - 

Forse questo darà un codice più accurato.

+0

Ecco un esempio di come sto chiamando lo script: http://i.imgur.com/wAUXJ3D.png Come modificherei questo eseguibile per riflettere sul modo di eseguirlo in questo modo? – Jake

+0

@Jake Puoi semplicemente copiare e incollare ciò che ho postato in quella scatola? Non ho usato Bamboo, quindi non sono sicuro se prende i parametri e così via. – briantist

+1

Il secondo funziona dal prompt dei comandi, ma incollando l'intera cosa in Bamboo come un eseguibile non funziona. Segnala 'Impossibile trovare l'eseguibile su cmd/c echo C: \ build-scripts \ bamboo-build-scripts \ clear-directory.ps1; uscita $ LastExitCode | powershell.exe -Command C: \ build-scripts \ bamboo-build-scripts \ clear-directory.ps1. Cercheremo comunque di eseguirlo. Se qualcuno con la conoscenza specifica di Bamboo potesse intervenire, sarebbe fantastico. – Jake