尝试从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(期望)脚本,以便与另一个服务器通信以完成构建的另一部分。
答案 0 :(得分:1)
希望这个简单易用的解决方案有效;将/c
替换为//c
,所以:
cmd.exe //c call builds\\step2.bat $WIN_WORKSPACE
这是因为posix路径因git-bash而失败,即使你只打算用里面的命令传递它,所以它必须被转义。