2016-03-03 102 views
2

我想從TeamCity中獲取我的構建的數據,並將其放置到我創建的儀表板中。我獲得了大部分數據,但我缺少的是構建的時間戳。我在互聯網上搜索了很多,但無法找到它。在teamcity中,我可以看到所有構建的時間戳,但它在timstamp中不可用。Teamcity API中的構建時間戳

所有建議appriciated。

感謝

+0

您是否使用REST API或OpenAPI的? – sferencik

+0

即時通訊使用REST API。 – BIBird

+1

你在找什麼時間戳?當獲得'/ app/rest/builds/id:21966'時,我看到'build'元素包含'queuedDate','startDate','finishDate'子元素。如果這些不夠用,'triggered'子元素具有'date'屬性。你剛纔忽略了這些嗎? – sferencik

回答

1

你GET /app/rest/builds?locator=buildType:...後,你需要把所有的個體構建的詳細數據運行你感興趣,那很不幸,是多一個REST調用每一個個人的構建。

每個版本的URL格式爲/app/rest/builds/id:21966,但不要在程序中對其進行硬編碼。相反,當你遍歷所有構建(由你的第一個調用返回)時,取每個構建的屬性和GET。

總結: *得到每個/app/rest/builds?locator=buildType:...一次 *打造返回的數據集,取其href再拍REST調用 *爲每個返回的構建細節,時間標記在下面的子元素:queuedDatestartDate,finishDate,triggered

我們已經嘗試過使用這種方式實現儀表板,但發現它的速度太慢(太多的REST調用)。還有一種方法是編寫一個TC插件(使用本機OpenAPI):這將更快,但當然這是更多的工作。

+0

那麼沒有辦法獲得時間戳和所有的構建? – BIBird

+0

我很確定沒有;你必須看看個人構建。 – sferencik

3

您不需要爲每個構建額外撥打電話,但需要制定您希望返回響應的方式。有一個名爲的查詢字符串參數字段,它允許您定義要恢復的內容。

例如要返回原來的通話開始和結束的數據,你可以添加&欄=版本(的startDate,finishDate)到您的原始請求

/httpAuth/app/rest/buildTypes/id:##BUILD_TYPE_ID##/builds?fields=build(startDate,finishDate) 

這將返回這樣的事情

<builds> 
    <build> 
    <startDate>20140202T230456+0000</startDate> 
    <finishDate>20140202T230518+0000</finishDate> 
    </build> 
    <build> 
    <startDate>20140202T224912+0000</startDate> 
    <finishDate>20140202T224957+0000</finishDate> 
    </build> 
</builds> 

的告誡,這是你現在必須專門定義你想要返回。因此,爲了回報所有其他領域和開始/結束日期,這個參數添加到查詢字符串

&fields=build(id,buildTypeId,number,status,state,branchName,defaultBranch,href,webUrl,buildTypeId,startDate,finishDate) 

TeamCity的文檔 - Full and Partial responses

希望這有助於