iT邦幫忙

2021 iThome 鐵人賽

DAY 7
1

簡單來說,TeamCity 的運作方式是 Server + Agent 的架構。平常我們看到的 TeamCity 操作畫面是 Server 端,它負責提供 UI 跟使用者互動、儲存所有設定、定期去檢查 Repository 的更新,當它發現有變更時,就會把要做的任務放到 Queue 裡。TeamCity 的 Agent 就是 Worker 的概念,這些 Agent 會等待 Server 配發任務給它執行。換言之,真正在執行 Build 的是 Agent。當 Agent 完成任務時,會把執行任務的 Log 及 Artifact 回傳給 Server 儲存起來。

這樣的設計有幾個好處:

  1. 架構上分工明確,要擴充時也更具彈性
  2. 當建置工作量增加而造成等待時間變長時,只要增加更多的 Agent 即可消化更多的任務
  3. 可依據專案建置的需求準備特殊能力的 Agent,比方說要建置 iOS App 時,可以在一台 macOS 上安裝 Build Agent,TeamCity Server 就會把該任務指派給有建置 iOS 能力的 Agent 執行

不論您是使用軟體包或是 Docker 安裝 TeamCity,預設只會啟動 TeamCity Server 及 1 個 Build Agent。若想要提升消化工作的效率,可以安裝更多 Build Agent 來加速。今天就來跟大家介紹如何加裝更多的 Build Agent 來加快消化建置任務的速度。

取得 Build Agent 安裝檔

首先點選 TeamCity 畫面上的 Agent 連結,進到 Agent 設定頁,接著點選 Install agent 的按鈕,選擇其中一個版本下載安裝檔。

本文將以 Minimal ZIP file distribution 的版本示範安裝及啟動流程。

安裝/設定 Build Agent

將上一步下載到的 buildAgent.zip 壓縮檔放到目標機器(比方說放到一台 Linux 主機)上的安裝位置(比方說 /opt 底下),然後將 Build Agent 資料夾裡的 conf/buildAgent.dist.properties 重新命名成 conf/buildAgent.properties

用文字編輯器打開 buildAgent.properties,修改裡面的 serverUrl 成 TeamCity 的路徑(應該已經預先設定好,沒有的話再手動改),以及在 name 欄位設定 Build Agent 的名字(本文示範使用 myBuildAgent1),完成後存檔關閉。

啟動/關閉 Build Agent

接著用隨附的控制腳本啟動 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,加快建置專案任務的消化速度喔!

貼心提醒

  1. TeamCity 的 Build Agent 也是用 Java/Kotlin 寫的,在安裝前別忘了準備 JDK 8 的執行環境喔!或是改用 Docker 封裝好的版本。
  2. TeamCity 的免費額度支援 3 個 Build Agent,可以好好利用!

最佳實踐

本文示範的方式是在同一台機器上同時安裝 TeamCity Server 及 Build Agent,不過請注意這 並非最佳實踐 喔!比較好的作法是用獨立的一台機器當 TeamCity Server,然後視團隊需求準備足夠數量及對應能力的 Build Agent,才能在安全性、執行任務效率及 HA 上有絕佳的表現喔!

筆者內心話:想偷懶的話,用 TeamCity Cloud 就是最佳解啦!

參考資料


上一篇
第六天:首次啟動設定
下一篇
第八天:安裝 IntelliJ IDEA
系列文
DevOps 萌新的 TeamCity 極速上手寶典31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言