在Windows上的Ubuntu上Bash无法从Jenkins工作-Jenkins作业挂起 [英] 'Bash on Ubuntu on Windows' doesn't work from Jenkins - jenkins job hangs

查看:0
本文介绍了在Windows上的Ubuntu上Bash无法从Jenkins工作-Jenkins作业挂起的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我们使用repo和Gerrit工具来管理我们的Git存储库和代码审查。

‘repo init’和‘repo sync’在我们的Linux从属系统上运行良好,但我们在Windows从属系统上遇到了重大问题:

    当在Jenkins‘Execute Shell’框中给出时,
  1. Shebang指令在Windows上被忽略,因此如果我们在Windows Slave上安装了多个外壳(MINGW_32、MINGW_64、CYGWIN64、Ubuntu Bash),就不可能通过指定Shebang指令来强制脚本在特定的外壳内运行-它就是不起作用。

  2. 我们设法从MINGW64外壳上的Jenkins在Windows从属服务器上运行了‘repo sync’,该外壳随Git for Windows安装一起提供。然而,"回购同步"在这里是超级慢的。我们尝试了几乎所有的命令行开关,但‘repo sync’仍然是瓶颈。在仅引入少数新更改的情况下,在现有工作区中完成‘repo sync’几乎需要10分钟。

  3. 我们在非Jenkins计算机上安装了‘Bash on Ubuntu on Windows’,并尝试了从那里进行‘repo sync’,结果只用了几分钟就完成了。

  4. 现在,问题是我们无法使用Jenkins提供的‘Bash on Ubuntu on Windows’。 如果我们使用Jenkins‘Execute Shell’框,我们无法弄清楚如何强制它使用Ubuntu bash外壳,因为Windows Slaves上忽略了shebang指令(知道这个问题)

如果我们使用Jenkins‘Execute Windows Batch Command’框并运行某些命令,请列出以下内容: Bash-c ls 这在本地计算机上有效,但如果从Windows Slave上的Jenkins运行该作业,并且我们看到旋转设备进度图标,则最终我们必须终止Jenkins作业。

可能需要修改一些Windows环境变量以强制Jenkins使用此外壳。Bash.exe位于C:WindowsSystem32中,它已经是PATH变量中的第一个条目,因此我们不确定如何使用Jenkins的Ubuntu bash外壳。

推荐答案

我认为这是因为在用户上下文中运行时,不允许在Windows10上的C:WindowsSystem32中执行Jenkins代理。奇怪的是,登录用户没有受到来自命令提示符的相同限制。

您可以通过复制所需的可执行文件(如bash.exe、curl.exe等)来解决此问题。从C:WindowsSystem32到C:in,并将该新位置添加到路径。例如:

set Path=C:in;%Path%
bash -c ls .

这篇关于在Windows上的Ubuntu上Bash无法从Jenkins工作-Jenkins作业挂起的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆