脚本在Windows中运行但在Jenkins中失败

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了脚本在Windows中运行但在Jenkins中失败相关的知识,希望对你有一定的参考价值。

我有一个bash脚本:

C:/Jenkins/workspace/xmlstarlet-1.6.1-win32/xmlstarlet-1.6.1/xml.exe ed -L -s "/Package/types[name='$TYPENAME']" -t elem -n members -v "$ENTITY" $SCRIPTFILE

C:/Jenkins/workspace/xmlstarlet-1.6.1-win32/xmlstarlet-1.6.1/xml.exe ed -L -s "/Package" -t elem -n types -v "" $SCRIPTFILE

在xml中插入特定类型的节点,这在本地运行正常,但是当尝试通过任何脚本运行时它会失败:

Ant脚本:

    <exec executable="C:Program FilesGitinash.exe" osfamily="windows">
        <arg value="generate_package.sh" />
        <arg value="C:/Jenkins/workspace/TrailheadBranchDemo/final.txt" />
        <arg value="package" />
        <arg value="C:/Jenkins/workspace/deploy/src" />
    </exec>

错误消息:无效的表达式:C:/ Program Files / Git / Package

它无法选择/Package/Package/types[not(*)]表达。

答案

问题是:

在Windows上,bash脚本的工作原理如下:

$ C:/Jenkins/workspace/xmlstarlet/xmlstarlet/xml.exe ed -L -i "Package" -t attr -n xmlns -v "http://soap.sforce.com/2006/04/metadata" C:/Jenkins/workspace/deploy/src/package.xml

而不是这个:

$ C:/Jenkins/workspace/xmlstarlet/xmlstarlet/xml.exe ed -L -i '/Package' -t attr -n xmlns -v "http://soap.sforce.com/2006/04/metadata" C:/Jenkins/workspace/deploy/src/package.xml

在Windows中,/Package不被很好地识别。

以上是关于脚本在Windows中运行但在Jenkins中失败的主要内容,如果未能解决你的问题,请参考以下文章

grunt karma 覆盖在 jenkins 上失败,但在 windows/unix 上有效

Selenium 测试在本地工作,但在 Jenkins 中失败

在 OSX 上运行但在 Windows 上失败的脚本 [重复]

Jenkins webbook 在 Bitbucket 中失败,但在 curl 中工作正常

Jenkins 管道 sh 在 Windows 上因“无法运行程序 nohup”而失败

jenkins中重启tomcat失败操作