2016-03-31 7 views
0

jenkinsの定義からさまざまなビルドスクリプトをすべて取り出して、ソースリポジトリの1つ以上のスクリプトに格納しようとしています。windows上でスクリプトを実行しているjenkins

一部のスクリプトはシェルスクリプトであり、一部はバッチファイルです。シェルスクリプトは、c:¥program files¥git¥git-bash.exeを実行し、いくつかのgitコマンドを実行することによって起動します(いいえ、私はプラグインを使用していません - 私のjenkinsサーバーではなく、この作業を行うためのアクセス権があるので、スクリプトファイルからgitコマンドを実行します)。変数を設定したり、ビルド用のファイルを設定したりするために、他の作業も行われます。

問題は、そのシェルスクリプトからバッチファイルを実行しようとしています。 step1.shスクリプトが

# Override Jenkins value 
WORKSPACE=/f/git/project 
WIN_WORKSPACE=`cygpath -w $WORKSPACE | sed 's/\\\\/\\\\\\\\/g'` 
echo "WIN_WORKSPACE: $WIN_WORKSPACE" 
... 
echo "Building!" 
echo cmd.exe /c call builds\\step2.bat $WIN_WORKSPACE 
cmd.exe /c call builds\\step2.bat $WIN_WORKSPACE 
echo "done building" 

までそのように動作

#!c:\Program Files\Git\git-bash.exe 
/f/git/project/builds/step1.sh $MASTER_BRANCH $BUILD_TYPE $TAG_CLIENT 

:ジェンキンスで

、私は(引数として渡された三つのパラメータで)プロセスをキックオフするために1つのシェルスクリプトを持っています何が起こるかというと、(とまたは「コール」キーワードなし)cmd.exeのは、単にコマンドプロンプトに飛び出すと、私は、「exit」と入力するまでそこに座っているということです。

Building! 
cmd.exe /c call builds\step2.bat F:\\git\\project 
Microsoft Windows [Version 6.3.9600] 
(c) 2013 Microsoft Corporation. All rights reserved. 

F:\git\project>exit <--- I have to type that. 
exit 
done building 

バッチファイルをgit-bashシェルから実行することはできますか?より良いアプローチがありますか?私はバッチファイルに変換しようとしていますが、(コマンド出力のキャプチャや変数への格納のような)シンタックスは、シェルスクリプトでうまくいきます。ビルドの別の部分を完了するために別のサーバーと通信するためのビルド・プロセスの後半に、少なくとも2つのシェル(期待)スクリプトを実行する必要もあります。

答えて

1

うまくいけば、この痛みを伴わない単純な解決策がうまくいきます。そう、//c/cを置き換える:

cmd.exe //c call builds\\step2.bat $WIN_WORKSPACE 

このPOSIXパスは、それが内部コマンドで渡されるためにあなただけのつもりなので、それはエスケープする必要がありますにもかかわらず、のgit-bashのに失敗しているためです。

+0

さて、それをしました。どうして? – Jon

+1

Gitはウィンドウと滑らかではないので、Cygwinはbashとcmdを渡す方が良いので、ウィンドウposixのパスは失敗します。 [ここ](https://github.com/git-for-windows/build-extra/blob/master/installer/ReleaseNotes.md)[ここ](https://github.com/lavv17/lftp/issues/) 109)[と多分ここで](http://stackoverflow.com/questions/11865085/out-of-a-git-console-how-do-i-execute-a-batch-file-and-then-return- to-git-conso) – Bloodied

関連する問題