2013-02-28 30 views
2

我有一個Jenkins CI服務器,帶有Promoted Builds插件和Mercurial插件。構建升級時我想要​​做的是在Mercurial中標記與該構建相對應的修訂。在Jenkins推廣構建時,如何在Mercurial中標記特定修訂?

Mercurial插件公開一個名爲MERCURIAL_REVISION_NUMBER的環境變量,並且在構建運行時填充此變量,但在促銷運行時填充。所以,當我嘗試做以下在「執行Windows批處理命令」的步驟在我的推廣:

hg tag --rev %MERCURIAL_REVISION_NUMBER% "Promoted-%PROMOTED_NUMBER%-%PROMOTED_ID%"

它失敗,因爲%MERCURIAL_REVISION_NUMBER%的計算結果爲空字符串,所以沒有提供給價值 - 反悔論點。

我注意到Mercurial修訂版保存在每個版本的build.xml文件中。我想知道在我的推廣步驟中是否有一種簡單的方法可以實現。

+0

什麼樣的「失敗」?請輸出。 – 2013-03-01 01:51:19

+0

以上澄清 – 2013-03-01 14:54:53

回答

0

我最終用Powershell腳本來做。這是我的第一個PS腳本,所以我肯定會接受任何建議的改進。

# Read the appropriate Hg revision from build.xml and tag it 
$filename = "..\builds\" + $env:PROMOTED_ID + "\build.xml" 
[xml]$build = Get-content $filename 
$hg = $build.SelectSingleNode("/build/actions/hudson.plugins.mercurial.MercurialTagAction") 
write-host "Tagging revision: " + $hg.rev 
hg tag --force --rev $hg.rev "Promoted-$env:PROMOTED_NUMBER-$env:PROMOTED_ID" 
hg push --force 
2

該build.xml必須是你的Jenkins腳本創建的東西 - Mercurial不。

您的Mercurial命令看起來不錯。

一種選擇是乾脆把建立信息到一個文件作爲詹金斯腳本的一部分:

hg id > $WORKSPACE/built-version 

,然後包括built-version作爲構建的文物之一。然後你的升遷腳本可以這樣做:

hg tag --rev $(< built-version) "Promoted-${PROMOTED_NUMBER}-${PROMOTED_ID}" 

或任何窗戶的等價物。

+1

Mercurial命令本身是正確的。問題出在詹金斯身上 - 詹金斯正在失去跟蹤我需要標記哪個版本。我正在尋找如何知道與此版本對應的特定版本。 – 2013-03-01 14:53:00

相關問題