2011-03-10 94 views
1

我有一些集成測試在TeamCity成功構建時啓動。我已經成功使用TeamCity REST API以標記構建爲已通過或失敗,但實際上希望將構建狀態標記爲已通過或未通過(以與編譯或單元測試失敗相同的方式構建失敗)。構建完成後通過TeamCity從另一個構建配置通過REST API失敗構建

REST API的documentation相當稀疏。是不是可以通過REST API來做到這一點,或者它沒有記錄?

澄清:

當前過程如下:

「APP」 TC構建配置實際生成應用程序,並運行單元測試。

「測試」TC構建配置取決於「應用程序」配置成功完成。如果「應用程序」成功構建(無編譯或單元測試失敗),則「測試」配置將啓動,從而降低構建工件並在應用程序上運行實時集成測試。在運行這些測試之前,「App」配置具有通過狀態,因爲它已成功編譯,並且沒有單元測試失敗。

我想要做的是如果「測試」配置失敗,則將「應用程序」配置狀態更改爲失敗。目前我只是將「App」標記爲已通過或失敗,但實際的構建狀態總是通過。基本上,我試圖獲取更改日誌或歷史記錄,以顯示失敗構建的紅色X圖標,而不是綠色複選標記。

「應用程序」和「測試」是2個獨立的TeamCity構建配置。由於它們是分開的,因此@sharma建議的構建腳本交互不會有任何用處,因爲構建腳本交互可用於失敗/更新當前正在運行的構建配置,而我試圖單獨更新/失敗完成構建配置。

爲什麼我們有2個獨立的配置,而不是從主構建中運行測試?當然速度!集成測試最多需要10分鐘才能運行,並且我們不希望因爲集成測試正在運行而放慢編譯週期。

回答

0

所以答案我原來的問題,是有可能使用REST API來標記建立從另一個構建配置失敗,就在於它是不可能。

每個TeamCity支持:完成後無法更改構建狀態。這不是REST API的限制,這只是TeamCity未實現的功能。 這裏是我們的跟蹤器的相關功能要求:http://youtrack.jetbrains.net/issue/TW-2529

(我upvoted @夏爾馬的回答和評論,因爲他們肯定翔實,但最終不是我的問題的解決方案。)

+0

只是一個想法,如果你有第二個構建配置作爲構建步驟,該蟎暫時解決你的問題。 – remo 2011-03-21 12:47:51

3

您應該可以通過build Interaction scripts來完成。

UPDATELook here,它應該有「報告構建日誌的消息」。如果您將以下消息打印到您正在運行的應用程序構建的控制檯中。 teamcity構建將失敗並顯示爲錯誤。如果您將狀態更改爲故障,它仍會失敗。你有關於我提供的鏈接的更多信息。示例消息可能要打印:

"##teamcity[message text='Exception text' errorDetails='stack trace' status='ERROR']" 

Look at this

+0

我不確定這是否符合我的需求,但我會檢查出來。看起來,構建交互腳本將在當前構建過程中使用,以自定義傳遞/失敗當前運行的構建,而不是外部構建。 – 2011-03-17 14:40:53

+1

@Tom E - 我已經更新了一個鏈接,您可以報告生成日誌,並通過腳本在團隊城市 – remo 2011-03-17 17:11:46

+0

上感謝您的更新,這是更好的信息,但它不會做我想做的事情。 – 2011-03-17 19:53:17

7

其實你可以改變構建狀態甚至在構建具有以下非文件的要求完成(你需要buildId構建要更改):

捲曲-v --request POST「http://your-teamcity-url/ajax.html」 -u賬號:密碼--data「的評論=你失敗的原因「--data」status = FAILURE「--data」changeBuildStatus = buildId

+0

這實際上起作用。即使完成後它也會改變構建的狀態。 – Jazz 2016-02-26 21:58:19

+0

這應該是公認的答案!太感謝了! – 2017-03-10 17:06:45