web-dev-qa-db-ja.com

JenkinsのWindowsシェルを変更します(CygwinからGit Bash / msysに)

Windows 7とWindows Server 2012スレーブがあり、JenkinsエージェントとCygwinがすでにセットアップされています。 Cygwinを避け、Git for Windowsに付属しているGit Bash Shellを使用したいと思います(msysgitと呼ばれていると思います)。だから私はC:\cygwin64からC:\cygwin64.bak、削除済みC:\cygwin64\binパスから、再起動します。

Windows 2012ボックスが正常に機能するようになり、(Unix)シェルスクリプトが実行され、$OSTYPE = msysuname = MSYS_NT-6.3(Git Bashシェルが実行されていることを示します)。

Windows 7ボックスでは何も実行されず、次のエラーが発生します。

ワークスペースC:\ Users\Jenkins\workspace\TESTのwin7でリモートでビルド
[win7] $ sh -xe C:\ Users\jenkins\AppData\Local\Temp\hudson5047939025129374618.sh
システムは、指定されたファイルを見つけることができません
致命的:コマンドの実行に失敗しました
Java.io.IOException:プログラム "sh"を実行できません(ディレクトリ "C:\ Users\Jenkins\workspace\TEST"内):CreateProcess
error = 2、システムは指定されたファイルを見つけることができません。
at Java.lang.ProcessBuilder.start(ProcessBuilder.Java:1041)

だから私の質問は、JenkinsがC:\Program Files\Git\bin\sh.exe、またはC:\Program Files\Git\usr\bin\bash.exeシェルスクリプトを実行するには?

10
gib

私はそれを解決しました。 Jenkinsはパスの最初のsh.exeを選択するだけです。 Git BashはC:\Program Files\Git\usr\binにexeを持っているので、それをパスの先頭に追加すると、Jenkinsによって取得されます。

この変更を行った後、Jenkinsとのスレーブの接続を再起動する必要があります。そうしないと、パスが伝播しません。 Java Web Startを使用している場合は、Javaウィンドウを閉じて再起動します。

21
gib

Windowsエージェントのみがあり、すべてにGit for Windowsが同じ場所にインストールされている場合は、Jenkinsシステム構成ですべてのエージェントのシェル実行可能ファイルを設定できます。

Manage Jenkins>Configure Systemに移動し、ShellおよびShell実行可能ファイルを設定して、 シェルビルドステップを実行します。

Git for Windowsと共にインストールされるシェルを設定する方法の例を次に示します。

Jenkins Shell configuration

注:これは、WindowsエージェントとWindows以外のエージェントが混在している場合は機能しません( JENKINS-38211 )。 sh.exeが異なる場所にインストールされているWindowsエージェント(32ビットと64ビットのWindowsがこれらのプラットフォームのデフォルトのインストール場所を使用している場合など)がある場合、同様の問題が発生します。これは、環境に同じ構成のWindowsノードのみが含まれている場合にのみ使用してください。

9
apa64