簡單來說,TeamCity 的運作方式是 Server + Agent 的架構。平常我們看到的 TeamCity 操作畫面是 Server 端,它負責提供 UI 跟使用者互動、儲存所有設定、定期去檢查 Repository 的更新,當它發現有變更時,就會把要做的任務放到 Queue 裡。TeamCity 的 Agent 就是 Worker 的概念,這些 Agent 會等待 Server 配發任務給它執行。換言之,真正在執行 Build 的是 Agent。當 Agent 完成任務時,會把執行任務的 Log 及 Artifact 回傳給 Server 儲存起來。
這樣的設計有幾個好處:
不論您是使用軟體包或是 Docker 安裝 TeamCity,預設只會啟動 TeamCity Server 及 1 個 Build Agent。若想要提升消化工作的效率,可以安裝更多 Build Agent 來加速。今天就來跟大家介紹如何加裝更多的 Build Agent 來加快消化建置任務的速度。
首先點選 TeamCity 畫面上的 Agent 連結,進到 Agent 設定頁,接著點選 Install agent 的按鈕,選擇其中一個版本下載安裝檔。
本文將以 Minimal ZIP file distribution 的版本示範安裝及啟動流程。
將上一步下載到的 buildAgent.zip
壓縮檔放到目標機器(比方說放到一台 Linux 主機)上的安裝位置(比方說 /opt
底下),然後將 Build Agent 資料夾裡的 conf/buildAgent.dist.properties
重新命名成 conf/buildAgent.properties
。
用文字編輯器打開 buildAgent.properties
,修改裡面的 serverUrl
成 TeamCity 的路徑(應該已經預先設定好,沒有的話再手動改),以及在 name
欄位設定 Build Agent 的名字(本文示範使用 myBuildAgent1
),完成後存檔關閉。
接著用隨附的控制腳本啟動 Build Agent:
$ ./<AGENT_DIRECTORY>\bin\agent.sh start
Build Agent 啟動後會自動與 Server 連線,完成後就可以在 TeamCity 的 Agent 頁面看到新增的 Build Agent。在導覽列上的 Agent 數字也會增加。
若要關閉 Build Agent,一樣使用隨附的控制腳本:
$ ./<AGENT_DIRECTORY>\bin\agent.sh stop
依照以上的步驟,就能在 TeamCity 上面增加更多的 Build Agent,加快建置專案任務的消化速度喔!
本文示範的方式是在同一台機器上同時安裝 TeamCity Server 及 Build Agent,不過請注意這 並非最佳實踐 喔!比較好的作法是用獨立的一台機器當 TeamCity Server,然後視團隊需求準備足夠數量及對應能力的 Build Agent,才能在安全性、執行任務效率及 HA 上有絕佳的表現喔!
筆者內心話:想偷懶的話,用 TeamCity Cloud 就是最佳解啦!