2016-08-19 71 views
0

我們有一個在mac上運行的TeamCity服務器,我們有多個代理運行在mac和windows上,執行不同類型的構建。代理構建完成後在TeamCity服務器上運行腳本

儘管構建本身不同(使用msbuild構建xcode/build),但每個配置末尾都有一堆相同的腳本。它們涉及將文件複製到特定的網絡共享,通知團隊成員以及其他一些事情。

如果我可以在相應的構建代理上運行特定於平臺的任務,但讓實際的服務器在此之後運行最終腳本,那將會是一件好事。

這樣做的原因是爲了避免在bash和批處理文件中寫入所有內容(我可以將它寫入服務器,並確保它有任何依賴關係),但是如果我們想要連接音頻/視頻/生成物理警報失敗,運行該腳本的腳本只能在服務器上運行(代理上沒有揚聲器/燈光/ nerf加農炮)。

任何想法,我可以輕鬆地設置腳本運行在服務器本身,並從構建傳遞屬性?

這是否需要一個插件,我可以使用依賴系統做些什麼,還是需要深入研究REST API並觸發其他配置?

回答

0

我們最終得出的解決方案是使用Meta-runnersPython Runner。這使我們可以使用Team City變量設置跨平臺的Python腳本。它還允許我們在多種配置中使用這些腳本。

如果有人想自己做這件事,那麼Python中的platform module是非常有用的,如果你仍然需要在你的腳本中做一些平臺特定的事情。

例如下面的代碼可以讓我們給我們的生成代理使用網絡共享路徑已設置:

if platform.system() == 'Windows': 
    network_folder = "//server_pc/builds" 
else: 
    network_folder = "/Volumes/builds" 
相關問題