TeamCity + HG。只拉(推?)传递构建

时间:2010-12-10 18:33:43

标签: mercurial teamcity

感觉就像持续整合的普及一样,这应该是小菜一碟,但我很难过。我正在和HG一起建立TeamCity。我希望能够将变更集推送到TeamCity监视并运行基于更改的构建库。这很容易。

接下来,如果构建通过,我希望将该变更集拉入“干净”存储库...仅包含传递变更集的存储库。应该很容易但是......

TeamCity 6支持多个构建步骤,如果任何步骤失败,则其余步骤不会运行。我的想法是在最后放置一个构建步骤来执行拉动(或者可选择推送?)以将传递的变更集放入清理存储库中。

我正在尝试使用PsExec在存储库的框中运行hg。

如果我尝试只运行一个普通的'hg pull',它就找不到hg.exe,即使它已在路径中设置并且我使用了-w标志。

我已经尝试将.bat文件放在带有修订参数的干净存储库中,它在本地工作正常。当我尝试远程运行.bat文件(使用PsExec)时,它运行一切正常,但它尝试在构建代理上运行它。即使我设置-w参数,它在那里运行.bat文件,但尝试在构建代理框上运行内容。

我只是在接近我的方法吗?看起来这样做是非常显而易见的,要么我的谷歌技能正在减弱,要么没有人认为这是值得写的。无论哪种方式,我都被困在SVN的土地上试图离开,所以我会感激一些帮助!

2 个答案:

答案 0 :(得分:1)

不是直接运行命令,而是尝试在shell下运行它?这将确保您获得您期望的环境变量。如果不使用命令shell,它将直接执行命令而不设置环境,因此您必须完全指定hg可执行文件的路径。

尝试使用psexec的命令行,例如:psexec c:\windows\system32\cmd.exe /c hg.exe

当然,适当地添加机器名和hg子命令。

答案 1 :(得分:0)

将以下行添加到您的powershell配置文件中:

function hg {
    cmd /c hg.exe $args
}

如果它无法识别hg.exe,您可能需要将其添加到路径中:

$env:Path = $env:Path + ";C:\Program Files\TortoisHG\";

(您只需在命令提示符下键入notepad $profile。它将打开文件供您在记事本中编辑。复制并粘贴此行然后保存,退出。)

(见PowerShell alias syntax for running a cmd.exe builtin function?