如何让Cygwin成为Jenkins的默认shell?

ckocjqey  于 2023-06-21  发布在  Jenkins
关注(0)|答案(5)|浏览(117)

我试图为使用SCons编写的构建提出一些合理的解决方案,这依赖于相当多的应用程序以类似Unix的方式访问,使用类似Unix的路径等。然而,当我试图使用SCons插件或Jenkins中的Git插件时,它试图使用类似cmd /c git.exe的东西调用插件-这肯定会失败,因为Git是使用Cygwin安装的,并且只在Cygwin shell中已知,而不是在CMD中。但是即使我可以让git和其他的东西对cmd.exe可用,也会出现其他问题:Cygwin版本的Git期望路径有正斜杠,并将反斜杠视为转义字符。愚蠢的Windows文件系统相关的问题也会出现(我不能给予Jenkins权限来删除我自己的文件!)).
那么,有没有一种方法可以让Jenkins只使用Cygwin shell,而不使用cmd.exe?或者我应该准备在虚拟机中运行一些Linux来处理这个问题?

pkln4tw6

pkln4tw61#

您可以配置Jenkins使用特定的shell命令执行cygwin命令,如下所示:

c:\cygwin\bin\mintty --hold always --exec /cygdrive/c/path/to/bash/script.sh

其中script.sh将执行Jenkins执行所需的所有命令。

ar5n3qh5

ar5n3qh52#

只是为了记录我最后做了什么:
1.添加用户SYSTEM到Cygwin,mkpasswd -u SYSTEM
1.通过将新创建的用户主目录添加到记录中来编辑/etc/passwd。现在它看起来像下面这样:
SYSTEM:*:18:544:,S-1-5-18:/home/SYSTEM:
1.将自己用户的配置设置如.netrc.ssh等复制到SYSTEM主页中。然后,从Windows资源管理器,通过一系列弹出窗口,我已经将所有这些文件的所有权声明给SYSTEM用户。一个接一个!我爱微软!在Jenkins中,我现在为我的构建运行一个 Package 器,设置一些其他环境变量等。通过调用c:\cygwin\bin\bash --login -i /path/to/script/script
1.因为配置中的其他困难而放弃了它,并使Jenkins服务在我的用户而不是SYSTEM下运行。这里有一篇关于如何做到这一点的博客:http://antagonisticpleiotropy.blogspot.co.il/2012/08/running-jenkins-in-windows-with-regular.html但是,基本上,你需要打开Windows服务,然后找到Jenkins服务,选择它的属性,转到“登录”选项卡并将用户更改为“此用户”。

j2cgzkjk

j2cgzkjk3#

一种方法是使用以下命令开始“执行shell”构建步骤

#!c:\cygwin\bin\bash --login

诀窍当然是,它重置您的当前目录,所以您需要

cd `cygpath $WORKSPACE`

回到工作区

sqougxex

sqougxex4#

添加到thon56的好答案:这是有帮助的:"集合-ex"

#!c:\cygwin\bin\bash --login 
cd `cygpath $WORKSPACE`
set -ex

详细内容:

    • e在出错时退出。如果您希望作业因错误而失败,这一点很重要。
  • 如果需要,-x将命令回显到屏幕。

也可以使用#! c:\cygwin\bin\bash--login-ex,但这会重复很多登录步骤,您可能不想看到这些步骤。

9w11ddsr

9w11ddsr5#

要在Jenkins窗口中运行sh,请执行以下步骤:
1.在C盘安装Cygwin
1.去管理Jenkins> system > shell,然后在这里提到Cygwin的路径,C:\cygwin64\bin
1.转到管理Jenkins >可用插件> Cygpath安装并重新启动Jenkin
1.创建一个新的作业/项目>构建步骤>执行shell>开始编写shell与shebang #!/bin/sh绝对有效!!!!

相关问题