如何从 Cygwin 在 Jenkins 控制台上显示 bash 脚本执行

Posted

技术标签:

【中文标题】如何从 Cygwin 在 Jenkins 控制台上显示 bash 脚本执行【英文标题】:How to display bash script execution on Jenkins Console from Cygwin 【发布时间】:2019-12-30 16:52:38 【问题描述】:

从 Jenkins 管道调用下面的 bash 脚本,但我没有在 Jenkins 控制台上看到脚本执行,有人可以建议如何在 jenkins 控制台上显示执行,在 cygwin 上运行的 bash 脚本执行(在 Windows 代理上) bat'call D:\cygwin64\bin\mintty.exe /usr/bin/bash -lic \"/home/test.sh\" '

【问题讨论】:

【参考方案1】:

实现此目的的一种可能方法是转到“管理 Jenkins”、“配置系统”,并将“Shell 可执行文件”参数更改为您的 cygwin bash 地址。如您的示例所示,类似于 D:\cygwin64\bin\bash.exe。然后,在作业配置上,您可以选择“Build”、“Execute Shell”。您可以在其中粘贴您的 test.sh 脚本内容。像这样:

使用此配置,Jenkins 将使用您在配置中提供的 bash.exe 地址运行您在“执行 shell”屏幕中粘贴的任何内容。我相信这是在 Windows 上运行的 Jenkins 上执行 shell 脚本的最无缝方式。输出看起来几乎是 Linux 原生的:

【讨论】:

我无法在 Jenkins 主配置页面上添加 shell 可执行文件,因为我们配置了不同的代理,而且我没有特别看到 windows 代理从配置 cygwin bash 可执行文件。请指教。 这个配置是全局的。如果您也在主节点上安装 Cygwin,只需确保它们都安装在同一路径中。我所做的是始终将其保留在默认的 C:\cygwin64\bin\bash.exe 中。或者,您可以在每个节点上使用 Cygwin bin 路径创建一个系统环境变量,并将其用作“Shell 可执行文件”路径,例如 %CYGWIN_PATH%\bin\bash.exe 已将 D:\cygwin64\bin\ 添加到 windows 代理服务器上的系统变量路径中,但我仍需要在 Jenkins 上添加 D:\cygwin64\bin\bash.exe 在全局配置上配置系统? 如果你在系统环境变量中添加了D:\cygwin64\bin\,那么“Shell executable”路径可以是bash.exe。 Jenkins 可能会根据环境路径自行找到它,但我发现明确声明它总是更好。 好的,将在 Jenkins 主配置页面上的 shell 可执行字段上更新 D:\cygwin64\bin\bash.exe。谢谢。

以上是关于如何从 Cygwin 在 Jenkins 控制台上显示 bash 脚本执行的主要内容,如果未能解决你的问题,请参考以下文章

如何在浏览器控制台上显示从服务器获取的值?

如何检查在我的程序运行的控制台上设置了啥字符编码?

如何在亚马逊 Alexa 控制台上删除亚马逊技能?

如何在控制台上的同一位置写入输出?

如何从 Android 开发者控制台上的应用程序列表中删除应用程序

jenkins:你们是怎么在控制台实时打印服务启动日志的?