我正在使用TeamCity觸發器構建一切,只要在分支上提交了svn。一旦成功,它會發送一封電子郵件通知,其中包含導致此構建被觸發的VCS更改。從TeamCity的角度來看,這很好。使用NAnt從TeamCity獲取VCS更改
現在團隊中有多個成員沒有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
我期待生成的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郵件中會更好。有沒有簡單的方法來做到這一點?
謝謝。我以前從未使用過TeamCity的RestAPI。基於你的解決方案,我可以得到teamcity.build.id,因爲這是xml格式,所以我決定在內部執行一個以獲得計數和svn修訂版。如果計數大於0,那麼我會生成一個svn日誌,其中可以通過電子郵件的消息發送更改。現在完美運作。再次感謝。 –
Geddon
嘿威爾士。我知道你說你從來沒有使用NAnt,但這可能是一個TeamCity的事情..在Build Step TC配置設置,如果我使用'/ httpAuth/app/rest/changes?build = id:%teamcity。 build.id%',同時粘貼我的** Build文件內容**,它會返回'build.id',但是如果我在構建Nant文件中使用它** TeamCity **不會返回'build。id'。我更喜歡通過指定路徑而不是將其粘貼到** TeamCity **中來調用Nant文件。你知道這是爲什麼嗎? – Geddon
如果TeamCity具有可見性,TeamCity會將'%teamcity.build.id%'替換爲實際的'build.id'。所以如果你在NAnt構建文件中只有這些文本,由於NAnt進程被分離出來,TC不知道替換它。但是,如果您使用TC Integrated NAnt runner,則應該可以使用選項'命令行參數:'並傳入'-D:arg.buildId =%teamcity.build.id%'。然後在你的NAnt腳本中使用'$ {arg.buildId}'。 – Welsh