如何在Teamcity Windows代理上运行shell脚本?

时间:2016-08-19 06:59:26

标签: windows shell jenkins teamcity

我们曾经使用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。我的上帝

3 个答案:

答案 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