パイプラインgroovyスクリプトでPowerShellコマンドを直接呼び出すことは可能ですか? Jenkinsでカスタムジョブを使用しているときに、PowerShellプラグインを使用してコマンドを呼び出すことができます。しかし、groovyスクリプトでこれを使用するスニペットはありません。
sh()
も試しましたが、このコマンドはコマンド内で複数の行とコメントを許可しないようです。
Groovy-ScriptからPowerShellスクリプトを呼び出すには:
bat
コマンドを使用する必要があります。errorlevel
)変数が正しく返されることを確認する必要があります(EXIT 1
はFAILED
ジョブになります)。$LastExitCode
が考慮されることを確認する必要があります。そのネズミのために、私はパイプラインスクリプトに統合できる少しグルーヴィーなメソッドを書きました。
def PowerShell(psCmd) {
psCmd=psCmd.replaceAll("%", "%%")
bat "powershell.exe -NonInteractive -ExecutionPolicy Bypass -Command \"\$ErrorActionPreference='Stop';[Console]::OutputEncoding=[System.Text.Encoding]::UTF8;$psCmd;EXIT \$global:LastExitCode\""
}
[編集] UTF8 OutputEncodingを追加しました。Server2016およびWin10で問題なく動作します。[/ EDIT][編集] '%'マスクを追加しました[/編集]
Pipeline-Scriptで、次のようにスクリプトを呼び出すことができます。
stage ('Call Powershell Script')
{
node ('MyWindowsSlave') {
PowerShell(". '.\\disk-usage.ps1'")
}
}
この方法の最も良い点は、スクリプトでこれを行わなくてもCmdLet
を呼び出すことができるということです。これは最良の実践です。
Ps1を呼び出してCmdLet
を定義し、次にCmdLet
を呼び出します
PowerShell(". '.\\disk-usage.ps1'; du -Verbose")
.
を使用してスクリプトを延期し、スクリプトがエラーコードを返すときにステップが失敗することを確認します(推奨)、気にしない場合は&
を使用します。Jenkins blog で発表されたpowershell
ステップでPowerShellスクリプトの呼び出しがサポートされるようになりました。
documentation は、複数行のスクリプトをサポートすることを示しています。