iT邦幫忙

2021 iThome 鐵人賽

1
DevOps

DevOps 萌新的 TeamCity 極速上手寶典系列 第 31

終章:TeamCity 進階學習路徑

之前有幸在一次機會裡,與幾位在 DevOps 領域深耕多時的前輩對談。那時前輩曾提到,在帶新人時都會要求他們先「手動」的把整個工作流程的每個環節都做過一次,然後再開始思考要在哪些地方導入自動化、以及選擇哪個 DevOps 工具。乍聽之下或許有點反直覺,但仔細想想其實很有道理。因為過早導入工具,往往會失去脈絡,變成為了用工具而用工具,甚至為了配合工具的功能而修改工作流程。到最後可能沒有解決當初的痛點,甚至讓後續維護的人更難接手。

因此筆者在設計這 30 天的指南時,有別於只單純談 DevOps 觀念、或是只介紹特定工具,而是以一個開發情境出發,從 IDE 寫程式開始、CI 伺服器的架設與操作,到開發生態系的整合,更著重在總體工作流程的脈絡,希望能從這「做中學」的過程中,讓讀者更能親身體會 DevOps 的實踐。

不過,要在 30 天內涵蓋 TeamCity 所有功能是不可能的,因此在指南的最後整理一下可以繼續深入的主題供各位讀者參考:

TeamCity 進階主題遺珠

目前指南介紹到的 TeamCity 功能大概可以滿足工作上 60-70% 的需求,但礙於篇幅,每個專案的需求都不同,有些情境也很難 100% 的模擬與重現,所以沒有辦法把每個功能都深入的講一遍。這邊列出幾個筆者的遺珠,希望未來還有再深入介紹的幾個點:

  • 不同的 Build Runner:由於指南裡的範例是以 Kotlin 為主的 JVM 生態系為主,幾乎所有的建置工作都可以用 Gradle 完成。所以教學裡只介紹了 Gradle、SSH Upload、SSH Exec 三種 Build Runner。其實 TeamCity 還有為數眾多的 Runner 可以使用,尤其是 Docker 相關的 Runner 更是方便。可以用 TeamCity 來 Build Docker Image 或跑 Docker Compose。甚至其他程式語言生態系的 Runner 也不少,各位讀者可以多多嘗試。
  • 客製化 Agent:因為指南裡的範例需求用預設的 Agent 就能完成,但若是專案有用到特殊的環境或工具的話,就會需要客製化 Agent,這部份有需要的話,也可以參考官方文件來試試看。
  • 其他種類的 Trigger:目前我們只用到 TeamCity 預設的 VCS Trigger,也就是當 VCS 有變更時會自動觸發 Build Configuration 運作。但除了 VCS Trigger 外,TeamCity 還支援像 Schedule Trigger、Branch Remote Run Trigger…等為數眾多的 Trigger,讓我們可以組合出更多種自動化流程。
  • 不同的 Build Feature:TeamCity 還支援各種 Build Feature,讓我們可以在 Build 完成後再觸發後續的動作,比方說合併 PR、自動送 Commit…等,讓自動化的流程可以更完整。
  • 更複雜的 Pipeline 設計:在指南的練習範例裡,我們只有做到當 Build 通過後,透過手動趨動的方式,拿前一個 Build 完成的 Artifact 做部署。但 TeamCity 其實可以做出更複雜的 Pipeline,比方說先 Build 完後、再過不同型式的測試(單元、整合)、先部署到測試機、再過更多型式的測試(壓力、資安掃描)、最後再停在最後一關等人工手動部署到正式機…等。不過這些更複雜的 Pipeline 設定就留待讀者依需求自行探索了。
  • 與 Issue Tracker 結合:以軟體開發團隊來說,Issue Tracker、VCS、CI/CD 往往是三位一體、深度結合的。因此 TeamCity 除了可以支援多種 VCS 外,也可以與市面上常見的 Issue Tracker 整合,讓我們在開發各種 Feature 時,能從 Ticket、Feature Branch、CI Build Log 一起聯動追蹤。

TeamCity 學習資源

為了讓各位能邁出進階學習的第一步,在這邊也統整一下 TeamCity 的學習資源供讀者們參考:

  • 產品文件 :其實 TeamCity 的官方文件維護的很完整(畢竟是有 Document Team 在維護),直接翻官方文件就可以回答幾乎 90% 的問題。這也是筆者在學習 TeamCity 時第一入口。
  • 官方教學 :假如您比較喜歡主題式的學習,尤其是想要知道 TeamCity 怎麼與您習慣的開發生態系整合的話,那可以從這份官方教學下手,直接挑你想看的程式語言主題,應該就可以快速上手 TeamCity。
  • CI/CD 指南 :假如您對 DevOps 的名詞解釋、觀念釋疑有興趣的話,TeamCity 團隊整理的這份 CI/CD 指南很值得一讀!再也不需要在茫茫網海搜尋了!
  • 官方播放清單 :這是 TeamCity 團隊在 JetBrains TV 官方 YouTube 頻道的完整播放清單,裡面包括 TeamCity 的介紹到歷次的 Webinar 錄影,非常豐富。不過因為跨了蠻長的年代,加上 JetBrains 產品更新速度很快,所以我會建議從中挑近 2 年的的影片來看會比較貼近當前的版本。
  • TeamCity Technology Day :TeamCity 團隊在 2020 年尾舉辦了一場線上技術日,在這個 YouTube 播放清單裡,有很多不同面向的 TeamCity 主題分享,可以挑自己有興趣的主題來聽。
  • TeamCity Cloud Launch Event :假如您因為這個指南而像筆者一樣愛上 TeamCity Cloud 的話,那可以參考一下這個 Launch Event 的錄影,可以更清楚 TeamCity Cloud 提供的功能與進階功能。

踏上無盡之路

隨著時間的演進、開發典範的轉移,開發工具也會持續跟著潮流進化。每當技術圈提到一個職位的技能樹時,就會搬出組織嚴密的 Roadmap 圖。不意外的,DevOps 也有一張 。看完後是不是有一種知識焦慮隱隱發作的感覺呢?

說到底,DevOps 是條無盡之路。身為開發者的我們,唯一能做的事情,就是保持開放的心胸接受新觀念、並保持對人與技術的熱忱。小步前進、持續修正、做到剛好就好,是筆者撰寫這指南時的心得。希望您在看完這份小小的 30 天指南後,能幫助您踏出 DevOps 的第一步!

感謝社群夥伴們的互相推坑與鼓勵

在最後要特別感謝跟我一同參賽的 Kotlin 社群夥伴們,有彼此的陪伴讓每個熬夜趕文章的夜晚多了更多的樂趣。但對他們非常抱歉的是,今年因為自己想要超越極限所以報了雙鐵,結果在第 24 天的時候因為我發文失誤把兩篇文章發到同一個系列,結果導致跟他們一起組團的團體賽斷賽失敗了…只好用剩下的這個 DevOps 主題跟他們一起跑完個人鐵人賽。謝謝他們的諒解與鼓勵,您們是最棒的夥伴!

歡迎大家訂閱我們團隊 Kotlin 愛台灣 2021 的文章,我的隊友們幾乎把 Kotlin 可以運用的各種面向都展示出來了!若你對 Kotlin 有興趣、想加入 Kotlin 社群,歡迎到 Kotlin Tips 參加我們的線上讀書會及練功場,平常每月也會有 Kotlin Meetup 活動,歡迎大家參加!


上一篇
第三十天:為 TeamCity 設計的 Kotlin DSL
系列文
DevOps 萌新的 TeamCity 極速上手寶典31

1 則留言

0
Andy 安迪
iT邦新手 5 級 ‧ 2021-10-08 23:46:06

聖佑最棒~

聖佑 iT邦新手 4 級 ‧ 2021-10-09 21:15:02 檢舉

Andy 你也很棒啊!

我要留言

立即登入留言