web-dev-qa-db-ja.com

JenkinsでWindows batファイルを実行する

Jenkins 2.46.1を使用しています。ビルドパイプラインプラグインがインストールされており、その中でWindowsバッチファイルを実行したいです。バッチファイルは、jenkinsコンソール出力ではなく、新しいコマンドウィンドウで実行する必要があります。以下のJenkinsパイプラインのグルーヴィーなスクリプトを示します。

node {  
    stage 'Init'
    bat '''
        call C:\\myprj\\mybat.bat stop
        EXIT /B 0
    '''
    stage 'Deploy'
    bat '''call C:\\myprj\\mybat.bat'''
}

initステージで、すでに開いているプロセスを強制終了し、ステージdeployで新しいコマンドウィンドウを開いてバッチファイルを実行する必要があります。問題は、上記が機能しないことです。ビルドは成功しますが、コマンドウィンドウは開きません。 Plsは提案する

5
user5917011

技術的には、あなたが求めていることを行うには、実行できる必要があります

bat 'start cmd.exe /c C:\\myprj\\mybat.bat'

これにより、新しいコマンドウィンドウ(cmd.exe)が起動し、指定されたバッチファイルが実行されます。 Jenkinsスレーブの実行方法によっては、何も表示されない場合があります。 (たとえば、Windowsサービスまたは別のユーザーとして実行されている場合、何も表示されません)

5
Kendall Trego

エージェントがサービスで実行されており、出力を取得する場合の代替ソリューション:

bat(readFile("mybat.bat"))

注:batファイルはワークスペースに存在する必要があります。

追加の注意:batファイルを元の場所から実行しなくなりました。代わりに、基盤となる永続タスクシステムによって作成された一時的な場所から実行されます。これは、%~dp0スクリプトの中で、期待するパスが返されません。

1
Anthony DiPirro