我试图为使用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来处理这个问题?
5条答案
按热度按时间pkln4tw61#
您可以配置Jenkins使用特定的shell命令执行cygwin命令,如下所示:
其中
script.sh
将执行Jenkins执行所需的所有命令。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服务,选择它的属性,转到“登录”选项卡并将用户更改为“此用户”。j2cgzkjk3#
一种方法是使用以下命令开始“执行shell”构建步骤
诀窍当然是,它重置您的当前目录,所以您需要
回到工作区
sqougxex4#
添加到thon56的好答案:这是有帮助的:"集合-ex"
详细内容:
也可以使用#! c:\cygwin\bin\bash--login-ex,但这会重复很多登录步骤,您可能不想看到这些步骤。
9w11ddsr5#
要在Jenkins窗口中运行sh,请执行以下步骤:
1.在C盘安装Cygwin
1.去管理Jenkins> system > shell,然后在这里提到Cygwin的路径,C:\cygwin64\bin
1.转到管理Jenkins >可用插件> Cygpath安装并重新启动Jenkin
1.创建一个新的作业/项目>构建步骤>执行shell>开始编写shell与shebang #!/bin/sh绝对有效!!!!