2015-04-22 43 views
4

在TeamCity 9中,我有兩種構建配置:A,B,它依賴於A(快照依賴性)。有時單獨啓動,有時鏈B. 我想改變的build.number到(例如)0.<build.counter of B>當A由B.在TeamCity 9中用參數覆蓋依賴關係屬性

根據docs觸發:

自從TeamCity的9.0,有可以通過在依賴性構建中重新定義它們來覆蓋 依賴性參數。例如,對於 示例,構建配置A依賴於B,而B依賴於C; A具有改變任何使用 以下格式及其依賴的參數 的能力:

reverse.dep.<btID>.<property name>

好的,我創建的配置參數在B:reverse.dep.A.build.number = 0.%build.counter%。 所以,當我啓動構建鏈我想build.number甲意願改爲0.123(例如,build.counter乙等於123的),但代替0.%build.counter%已經傳給甲A使用自己的財產build.counter

如何準確傳遞TeamCity參數的值?

回答

2

考慮問題
沒有辦法傳遞價值,以建立依存關係與reverse.dep.語法。

reverse.dep參數值按原樣傳遞到依賴關係鏈中。

(從這裏開始:https://youtrack.jetbrains.com/issue/TW-40772


考慮問題

  1. 創建配置 「C」
  2. 添加到從 「A」 以 「C」 快照依賴「如果有適合的選項,請勿運行新版本」選項
  3. 從「B」添加到「C」快照依賴關係沒有相同的選項。
  4. 通過reverse.dep.A.use_C_number = true將參數從「B」傳遞到「A」,所以「A」知道使用什麼計數器。
  5. 使用此參數在腳本(新生成步驟)中的 「A」,例如(PowerShell的):

    # Gets build.number of "C" 
    $C_num = "%dep.C.build.number%" 
    
    # Gets 'use_C_number' parameter 
    $use_C_number = "%use_C_number%" 
    
    # Change current build.number if needed 
    if ($use_C_number -eq "true") { 
        Host-Write "##teamcity[buildNumber '1.2.3.$C_num']" 
    } 
    

在這種情況下 「C」 將僅由 「B」 和觸發而不是「A」,因爲「A」將始終使用「合適」的「C」版本(「C」沒有附加VCS根目錄)。
注意:它應該至少有一個完成版本的「C」。
注意:我不確定所有情況下的「合適」構建,因爲documentation不清楚沒有附加VCS根目錄來構建配置的情況,但它有效。無論如何,TeamCity跟蹤器中有一個question

因此,C的build.counter只有在「B」排隊時纔會增加。 當「A」單獨啓動時,它使用默認build.number

P.S.感謝Nikita Skvortsov爲我提供解決方案。

+0

很高興你解決了你的問題。 –

2

到「A」構建開始時,「B」構建仍在隊列中,因此沒有可用的構建號。 %build.number%參數無法解析並被直接傳遞。

嘗試創建「C」配置並在其上添加快照依賴關係(來自A和B)。將A和B的內部版本號格式設置爲%dep.C.system.build.number% 這樣您將使A和B共享相同的計數器。

+0

這種方式我總是會在A中擁有C配置的'build.number',並且每次啓動A時都會增加。但是隻有當A配置(不是人類)觸發A時,我需要計數器遞增。 – Gendolph