1

一旦在分支上提交了对 svn 的提交,我将使用 TeamCity 触发器来构建所有内容。成功后,它会发送一封电子邮件通知,其中包含导致触发此构建的 VCS 更改。从 TeamCity 的角度来看,这很好用。

现在团队中有多名成员没有 TC 的权限,也无法设置通知。有了这个,我决定使用 NAnt<mail>来发送这个通知以及使用"${environment::get-variable('BUILD_NUMBER')}". 这在 teamcity 中运行良好。但是,我还需要在该电子邮件通知的消息中发送触发该构建的更改。

目前 TeamCity 将 VSC 更改格式化为电子邮件,如下所示:

     Changes included (1 change).
     Change 10433 by John Doe (4 files): Issue#245 - Issue description

我希望使用 NAnt 从 TeamCity 生成相同的更改。TeamCity使用 build_changes bean在common.flt文件中定义此格式。

**Changes included (${changesLink})
  Change ${mod.displayVersion} ${pers} by ${mod.userName} (${modLink}):
          <i>${description?trim}</i>**

如何在我的 NAnt 消息中使用它?由于 TeamCity 已经知道什么 svn 更改触发了构建,因此最好获取此更改并将其添加到我的电子邮件的 NANT 消息中。有没有简单的方法可以做到这一点?

4

1 回答 1

4

我从未使用过 NAnt,但可以提供另外两种解决方案......

1) 创建一个电子邮件邮件列表并将所有需要它的人添加到列表中。

然后创建一个 teamcity 用户,将其电子邮件发送到邮件列表,并为该用户设置所需的通知。

对此的限制是您必须为每个邮件列表创建一个用户,这可能会占用许可证。

2) 您可以使用 TeamCity REST API 从正在运行的构建中获取该信息。使用%teamcity.build.id%which 将返回构建 ID 并执行以下查找:

/httpAuth/app/rest/changes?build=id:%teamcity.build.id%

这将返回构建的所有更改,例如:

<changes count="3">
   <change href="/httpAuth/app/rest/changes/id:217404" id="217404" version="b6b97a0d7789d97df6df908ab582ebb723235f43" webLink="http://teamcity.my-domain.com/viewModification.html?modId=217404&personal=false"/>
   <change href="/httpAuth/app/rest/changes/id:217403" id="217403" version="064ecef5552ec2fb7875d7c26fe54cdf94b67bec" webLink="http://teamcity.my-domain.com/viewModification.html?modId=217403&personal=false"/>
   <change href="/httpAuth/app/rest/changes/id:217402" id="217402" version="9bc3a34c952059bbfc7bebeb79ba5a3c894ef555" webLink="http://teamcity.my-domain.com/viewModification.html?modId=217402&personal=false"/>
</changes>

然后循环遍历href每个<change>元素的 url 结果。哪个返回类似:

<change date="20130918T133404-0600" username="welsh" href="/httpAuth/app/rest/changes/id:217397" id="217397" version="51e925e354a83deccde881b30a76974b2ff745f4" webLink="http://teamcity.my-domain.com/viewModification.html?modId=217397&personal=false">
  <comment>
    My comments are here
  </comment>
  <files>
    <file before-revision="90acd4da1972814094c22e3020c5073521a7b640@141323126c0" after-revision="51e925e354a83deccde881b30a76974b2ff745f4@1413290abe0" file="grails-app/views/layouts/global.gsp" relative-file="grails-app/views/layouts/global.gsp"/>
  </files>
  <user href="/httpAuth/app/rest/users/id:1" id="1" name="Welsh" username="welsh"/>
</change>

并使用它来构建您的电子邮件给您发送给谁的电子邮件给谁,最初创建的工作量更大,但在不占用许可证的情况下,您可以更自由地向谁发送电子邮件。

于 2013-10-18T22:45:46.043 回答