我注意到两个不同的构建步骤:“执行shell”和“执行Windows批处理命令”。后者使用的是windows shell,这当然很可怕...但是前者使用的是什么shell呢?我注意到它很像bash,尽管转义有一些奇怪的属性(例如$ENVVAR
用单引号将它括起来)。
还有什么工具可用呢?例如,我注意到tar
是可用的,尽管我从未在那台机器上安装过它。which tar
显示/usr/bin/tar
,而which zip
显示"No zip in (/mingw64/bin:/usr/bin:/c/bin:/ ... windows paths ...
)"...但是这些目录在哪里/ shell运行在什么环境中呢?
在Jenkins文件夹中搜索*.exe
既没有显示sh.exe
,也没有显示tar.exe
,所以我不确定它们是从哪里来的。
具体地说,如果能指向相关文档,我将不胜感激--我还没有找到任何相关文档。
发布于 2015-12-20 16:58:42
我找到了讨论这个问题的one thread on Jenkins Users。
简而言之:
sh
cmd
执行
如果安装了MinGW,则可以使用Shell execute。
来自源代码:
它们都是从
Shell execute尝试在Windows上运行sh
,在非Windows上运行/bin/sh
(区别实际上是使用系统路径分隔符完成的)。这可以使用shebang进行更改(请参阅Shell.buildCommandLine
)
环境变量似乎是从构建本身(无论是什么)获取的,然后通过当前构建变量、服务器的URL、当前工作区等进行丰富。我已经找到了解决环境问题的other answers on SO。
https://stackoverflow.com/questions/34340452
复制相似问题