在我們整個系列教學裡,所有的操作都是在 TeamCity 的 Web UI 上完成,而 TeamCity 的 Web UI 的確設計的很好用也很漂亮,在上面完成所有操作當然沒問題。但對於已經熟悉 IntelliJ IDEA 操作的開發者來說,要在 IDE 與 Web UI 間來回跳躍看 Build Log、調查問題發生的原因還是有些不方便。假如在 IDE 裡 Commit & Push 後就可以直接看 Build 結果,是不是會覺得更方便呢?
沒錯!這樣的想法 JetBrains 團隊也想到了,也為 TeamCity 製作了 Plugin ,可以支援所有 IntelliJ Platform 的 IDE,讓開發者可以不用離開熟悉的 IDE 環境,就可以看到 Commit 送上 CI 主機上建置的結果。
安裝方式很簡單,打開 IDE 看到歡迎頁後,點選左邊的 Plugins,切換到 Marketplace 頁籤後,在搜尋框裡輸入 TeamCity,出現搜尋結果後按 Install 安裝,安裝完成後重新啟動 IDE 即完成。
為了讓 IDE 可以讀取 TeamCity 上的資料,請先在 IDE 裡打開 ShoppingCart 專案,開啟下方的 TeamCity 面板後,點選 Log in... 按鈕,並在彈出式視窗裡輸入 TeamCity 主機的 URL、Username 及 Password,完成後按 OK 連線。
成功連線至 TeamCity 後,在 IDE 裡的面板會顯示目前正在開發的專案,並將該專案的 Build Configuration 顯示出來。若想要客製化調整面板裡看到的專案或 Build Configuration 的話,可以按面板左上角 Configure Shown Projects 按鈕後,開啟瀏覽器進到 TeamCity Web UI 裡設定。
Web UI 會進入到登入帳號的 Notification Rules 設定。TeamCity 預設會先繼承 All Users 的設定,我們可以根據自己的需求新增規則(Rule)。點擊 Add new rule 按鈕新增通知規則。
建立通知規則時,首先選擇左邊想要顯示的專案及其下的 Build Configuration(比方說 Shopping Cart 專案下的 3 個 Build Configuration),接著選擇右邊設定在什麼事件發生時發送通知(比方說 Build fails、Investigation is updated),完成後按 Save 儲存。
再回到 IDE 裡應該就會看到 TeamCity 面板跟著對應更新,假如一時沒有變化的話,可以按一下上方的重新整理(Refresh)按鈕。
要從 IDE 觸發 TeamCity 執行建置任務有兩種方式,一種就照平常的方式開發、Commit & Push,當 TeamCity 自動執行時,IDE 裡的 TeamCity 面板也會同時顯示 TeamCity Server 上的資訊;另一種則是在 TeamCity 面板裡選定 Build Configuration 後按左上角第二顆播放按鈕,就會從 IDE 觸發 TeamCity 執行。
待 TeamCity 執行完畢後,就可以在 IDE 裡的面板看到建置結果。從畫面上可以看到我們這一次的 Build 並沒有成功,TeamCity 面板會將該 Build 標記為紅色,直接對這個 Build 點兩下,就會開啟對應的 Build Log。
TeamCity 面板會連線到 Server 上將 Build Log 下載下來顯示在面板裡,這樣我們就不需要到 TeamCity 的 Web UI 查詢了,非常方便。
除了 Build Log 外,我們也可以從 TeamCity Server 下載其他開發資訊到 IDE 裡顯示。點選功能表裡的 TeamCity,在下拉式選單裡選 Code Inspection、Code Duplicates、Code Coverage 等,就會在 IDE 裡以不同的型式顯示這些開發資訊。
有時我們會希望可以把程式碼先送到 TeamCity 測試看看能不能 Build 成功,但是又不希望這個「暫時」的程式碼被 Commit 到版本管理系統裡。這時候,我們可以用 TeamCity Plugin 提供的 Remote Run 功能,讓我們把一段變更送上 TeamCity 跑跑看,但又不用 Commit 程式碼留下冗餘的 Log。
趨動 Remote Run 的方式很簡單,先在 IDE 裡面修改程式碼,改好後開啟 Commit 面板,對著 Change list 按右鍵,選擇選單裡的 Remote Run in TeamCity。
接著在彈出式視窗裡點擊 Remote Run in TeamCity... 按鈕。
可能還會問你要以哪個 Build Configuration 執行,選好後按 OK 送出。
IDE 就會把這些變更以 Personal Build 的方式送到 TeamCity 排程,假如這個時候到 TeamCity Web UI 看,就會看到 TeamCity 還是以一個新的 Build 來執行建置任務,Build 號碼也有增加,但是圖示不一樣。
建置完成後可以在 TeamCity 觀看結果,不過在綜覽畫面會將這種 Personal Build 隱藏起來。再檢查一下 Git 的 Commit Log,會發現剛剛好像有 Commit 的動作實際上並沒有發生。若 Remote Run 後 Build 是有通過的,這時就可以放心的把變更正式 Commit & Push 啦!
針對 IntelliJ Platform 設計的 TeamCity Plugin,可以免除開發者需要在 IDE 及 TeamCity Web UI 間來回的時間,只需要查看 TeamCity 面板,就可以知道自己的變更是否成功在 CI 主機上通過測試及完成建置。甚至還可以透過 Remote Run,直接使用 TeamCity 主機的環境來測試,減輕開發者維護複雜測試環境的負擔,也能減少 Git Log 裡可能出現的冗餘 Commit,大大提昇團隊工作效率。
TeamCity Plugin 免除了開發者對 Web UI 的依賴,但當我們設定 TeamCity Project、Build Configuration 時,還是免不了要到 TeamCity Web UI 上用滑鼠點按來設定。是不是能有什麼方式可以讓開發者或 DevOps 可以更快速的設定好 TeamCity 專案呢?明天我們就要來介紹一下針對 TeamCity 自動化設計的 Kotlin DSL!