我们曾经使用Jenkins作为我们的CI工具,我可以在Jenkins windows slave中运行shell脚本,步骤是:
1.在Windows slave上安装cygwin
2.在Jenkins中添加步骤作为shell脚本
3.add“export PATH = / cygdrive / c / dev / tools / cygwin / bin:$ PATH”作为第一行
然后我可以在Jenkins中执行任何shell脚本。
现在我们需要转移到teamcity,我发现上面的步骤不适用于teamcity。
当我运行“命令行”并将第一行设置为“export PATH = / cygdrive / c / dev / tools / cygwin / bin:$ PATH”时,它会给出一个错误,因为“'export'不是被认为是内部或外部命令“。
有什么办法可以解决吗?我不想将我们的shell脚本重写为cmd。我的上帝
答案 0 :(得分:3)
这很容易解决。错误当然不是来自Cygwin,而是来自CMD。 export
命令仅在Bash脚本中有意义; cmd无法知道如何处理它。
您需要做的只是向CMD指定脚本应该使用Cygwin的命令解释器(bash
)运行。因此,您可以只指定bash
可执行文件和脚本的长路径,如
C:\dev\tools\cygwin\bin\bash D:\myscript.sh
或者您可以将cygwin目录的路径添加到计算机的PATH变量中。您可以通过更改系统设置并在其中附加路径来执行此操作,或者您可以将其作为上述脚本的一部分来执行此操作:
# this is not necessary if you have already changed the System Variable to include the path
set PATH=C:\dev\tools\cygwin\bin;%PATH%
bash D:\myscript.sh
答案 1 :(得分:0)
很有可能你已经使用Git Bash在代理上安装了Git。以下是我在不更改npm
变量
PATH
命令的方法
"C:\Program Files\Git\bin\bash.exe" -c "cd Source && npm install && npm run build"
答案 2 :(得分:0)
这样,您可以运行shell / bash命令: “ C:\ Program Files \ Git \ bin \ bash.exe” -c“ cd源&& npm安装&& npm运行构建”
如果您想运行bash脚本,请从Powershell中运行:-
&'C:\ Program Files \ Git \ bin \ bash.exe'。\ build.sh