jenkins在Windows slave

时间:2016-03-31 18:01:13

标签: bash shell batch-file jenkins

尝试从jenkins定义中提取所有各种构建脚本,并将它们存储到源存储库中的一个或多个脚本中。

有些脚本是shell脚本,有些是批处理文件。一个shell脚本通过运行c:\ program files \ git \ git-bash.exe并执行一些git命令来启动它(不,我没有使用插件 - 不是我的jenkins服务器而且我被赋予了最严格的限制,最小的访问做这项工作,所以我将从脚本文件中运行git命令)。还有一些其他的工作也是为了设置变量,为构建配置文件等等。

我遇到的问题是尝试从该shell脚本运行批处理文件。

在jenkins中,我有一个shell脚本来启动进程(有三个参数作为参数传递):

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

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"

会发生什么情况,cmd.exe(带或不带&#34; call&#34;关键字)只是弹出到命令提示符并坐在那里直到我输入&#34;退出&#34;:< / p>

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 shell运行批处理文件?有更好的方法吗?我正在尝试转换为批处理文件,但是使用shell脚本的语法(用于捕获命令输出和存储到变量等)更好。我还需要在构建过程中稍后运行至少几个shell(期望)脚本,以便与另一个服务器通信以完成构建的另一部分。

1 个答案:

答案 0 :(得分:1)

希望这个简单易用的解决方案有效;将/c替换为//c,所以:

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

这是因为posix路径因git-bash而失败,即使你只打算用里面的命令传递它,所以它必须被转义。