2012-12-07 39 views
2

我们的TeamCity构建了一个完整的安装程序包,其中包含多个Web应用程序,控制台应用程序和获胜表单应用程序。它构成一个应用程序套件。这些应用程序中的每一个都有它自己的Mercurial存储库。TeamCity 7.x在构建发布时收集提交消息

我们希望能够做的是自动为每个版本提供发行说明。当鼠标悬停在构建的更改上时,TeamCity已经在Web界面中显示Mercurial提交消息。是否有可能以某种方式在构建过程中捕获这些消息,并将它们提取到代理工作文件夹中的文本文件中?

回答

2

我不知道TeamCity,但我有一个简单的方法来提交一些软件的提交并将其格式化为一个整洁的历史记录日志,我猜你就是这样。也许你可以把它和修改它以适应你的需要 - 它只使用mercurial命令,所以你可以添加它作为你的构建的依赖项(我有一个VC++项目的后构建步骤,它运行命令和输出到文本文件)。

我有一个简单的模板,像这样:

$ cat history.template 
changeset = '{tags} {rev}\t{desc|fill68|strip|tabindent}\n' 
start_tags = '\n' 
tag = '{tag},' 
last_tag = '{tag} : {node|short} @ {date|shortdate}\n' 

而当我用下面的hg命令来创建一个可用的历史日志:

hg log --style history.template -r "reverse(::.) & !desc('Added tag')" 

的命令需要提交的所有祖先的意见工作目录,输出标签和变更集散列,以及标签的创建日期,然后是所有相关的更改。这是一个测试回购的例子hg log -G输出,显示了defaultrelease分支:

@ 21[tip]:18 c676cfe95284 2012-12-12 10:12 +0000 rob 
| Added tag 0.0.5 for changeset d0869f1c84ba 
| 
| o 20 7618cafcfc5d 2012-11-26 17:23 +0000 rob 
| | More changes indeed 
| | 
| o 19:17 ffc8bef85a2e 2012-11-26 17:22 +0000 rob 
| | Some additional files were needed 
| | 
o | 18[0.0.5]:15,17 d0869f1c84ba 2012-11-22 17:25 +0000 rob 
|\| Releasing 
| | 
| o 17 a41d817184ea 2012-11-22 17:25 +0000 rob 
| | Made the last change 
| | 
| o 16:13 e790e9022e70 2012-11-22 17:24 +0000 rob 
| | Made some changes using "record" 
| | 
o | 15 15f21a6f554a 2012-11-13 17:03 +0000 rob 
| | Added tag 0.0.4 for changeset c316b232c95c 
| | 
o | 14[0.0.4]:10,13 c316b232c95c 2012-11-13 17:03 +0000 rob 
|\| Merging, eh? 
| | 
| o 13 ba00c7045a23 2012-11-13 17:02 +0000 rob 
| | Modified revset selection for logging 
... 

所示的模板和命令输出如下:

0.0.5 : d0869f1c84ba @ 2012-11-22 
18  Releasing 
17  Made the last change 
16  Made some changes using "record" 

0.0.4 : c316b232c95c @ 2012-11-13 
14  Merging, eh? 
13  Modified revset selection for logging 
12  When logging history select only ancestors of the working directory 
11  Added history logging 
... 

添加评论,如果你想的一些解释命令行或模板。

+0

谢谢icabod。这无疑是一个正确方向的指针。不确定 - 认为可以在TeamCity构建过程中嵌入像这样的命令,以查找源代码管理中的更改。如果我能想出来,我会添加评论/回答。 –

+0

正如我所说的,我并不真正了解TeamCity,所以我只是将这个命令作为我的Release版本中的一部分。你可以用mercurial模板做很多事情,所以玩这些是一个好的开始。 – icabod

+0

@AlesPotocnikHahonina你找到了这篇文章的解决方案吗? –