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 = msys
、uname = 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
シェルスクリプトを実行するには?
私はそれを解決しました。 Jenkinsはパスの最初のsh.exeを選択するだけです。 Git BashはC:\Program Files\Git\usr\bin
にexeを持っているので、それをパスの先頭に追加すると、Jenkinsによって取得されます。
この変更を行った後、Jenkinsとのスレーブの接続を再起動する必要があります。そうしないと、パスが伝播しません。 Java Web Startを使用している場合は、Javaウィンドウを閉じて再起動します。
Windowsエージェントのみがあり、すべてにGit for Windowsが同じ場所にインストールされている場合は、Jenkinsシステム構成ですべてのエージェントのシェル実行可能ファイルを設定できます。
Manage Jenkins>Configure Systemに移動し、ShellおよびShell実行可能ファイルを設定して、 シェルビルドステップを実行します。
Git for Windowsと共にインストールされるシェルを設定する方法の例を次に示します。
注:これは、WindowsエージェントとWindows以外のエージェントが混在している場合は機能しません( JENKINS-38211 )。 sh.exe
が異なる場所にインストールされているWindowsエージェント(32ビットと64ビットのWindowsがこれらのプラットフォームのデフォルトのインストール場所を使用している場合など)がある場合、同様の問題が発生します。これは、環境に同じ構成のWindowsノードのみが含まれている場合にのみ使用してください。