在Jenkins目标中运行的Msbuild调用HgPull失败并出现HgProcessException:命令<hg.exe>不可用</hg.exe>

时间:2013-03-15 10:09:18

标签: mercurial msbuild jenkins cruisecontrol.net

我正在移植来自CCnet的MSBuild脚本以在Jenkins中运行。 MSBuild项目用于创建部署包。我宁愿让詹金斯自己推动这个过程,但这是一个长期目标。

我遇到的问题是(如标题中所示)当我们尝试使用HgPull目标时,从MSBuild mecurial任务(http://msbuildhg.codeplex.com/)我们得到错误消息

HgProcessException:命令hg.exe不可用[项目路径]

我在项目网站上看到有人通过向目标添加LibraryLocation proeprty来解决它,但这似乎没有任何区别。我的目标目前看起来像这样:

目标名称=“UpdateSources”&gt;     

<HgPull
        LibraryLocation="C:\Program Files\TortoiseHg\hg.exe"
        Force="true"
        Update="true"
        LocalPath="$(SourcePath)" 
        />

<HgUpdate
        LibraryLocation="C:\Program Files\TortoiseHg\hg.exe"
        Clean="true"
        LocalPath="$(SourcePath)" 
        />

我很茫然。如果您需要在此帖子中添加更多信息以解决此问题,请与我们联系。我对MSBuild真的很陌生,所以真的不知道从哪里开始调查这个。

编辑:

我忘记提到的一件事是我尝试在构建服务器的控制台窗口中运行MSbuild命令,但仍然得到相同的结果。这真的很奇怪,因为它在CCNet中工作得很好,CCNet在使这个命令工作方面有什么神奇之处?

2 个答案:

答案 0 :(得分:1)

现在已经解决了,不幸的是我不确定我做了哪些更改来纠正这些。我相信它可能已经归结为路径分隔符以及它们是否在配置文件的另一部分中跟踪或不跟踪。由于缺少应用程序之间缺乏弹性/一致性,您需要指定带/不带尾部斜杠的路径,这样做会让我感到烦恼。

答案 1 :(得分:0)

只是想一想,但尝试将“C:\ Program Files \ TortoiseHg”添加到您的系统路径中。也许CCNet指定了Jenkins无法访问的地方。

另外,为了理智,请确认hg.exe实际存在于该位置。