iT邦幫忙

2021 iThome 鐵人賽

DAY 1
2
DevOps

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

第一天:為什麼 CI/CD 對軟體開發來說是重要的?

日漸複雜的開發流程

還記得筆者第一個接觸的程式語言是 PHP,其直譯的設計、簡單不複雜的語法,任何人只需要準備一個副檔名是 .php 的純文字檔案,寫一小段混雜著 HTML 和 PHP 程式碼,用 FTP 丟到一台裝有 PHP 的主機就可以擁有一個「動態」網站。你說這樣寫不髒嗎?很髒。你說這樣寫當網站大了以後不會很難維護?不用懷疑,真的超難維護

雖然這樣寫有很多的問題,但我們不得不承認這樣亂糟糟的開發方式對於萌新來說卻是

簡單!直覺!好上手!

反觀現代開發工具鏈,從環境架設、工具安裝、語法特性、架構模式到雲端部署,幾乎每一個環節都可以寫一部 30 天的鐵人賽。雖然每一個技術的演進都是為了更長遠的開發願景而設計,但門檻也同時增高,別說對新手不友善,冗長且繁瑣的步驟有時連老手都踩坑連連。

難道在嚴謹的開發流程與流暢的開發體驗之間沒辦法平衡嗎?

讓 CI/CD 伺服器來幫你

當然可以!這時就是使用 CI/CD 伺服器的最佳時機!

開發者寫程式大多都是為了解決重複執行的動作,而像 CI/CD 這種伺服器軟體就是為了這樣的目的而存在。簡單來說,你可以把它想像成機器人,只要你交代它做的事情,它就會按部就班地完成,而且做百遍也不出錯、做千遍也不厭倦,是不是很棒?

所以,當發現我們一直在重複地做某些動作,比方說在終端機裡打同一個指令、把產生出來的檔案上傳到伺服器上、需要定期監看某些數值或特定報表時,就可以把這些動作抽取出來,交給 CI/CD 伺服器來處理。我們只需要在開發流程裡設計一個環節觸發它運作,然後定期到 CI/CD 伺服器上看結果即可。

萌新專屬的 TeamCity 上手指南

市面上的 CI/CD 伺服器選擇也不少,各家雲平台也推出不少類似的服務。在本系列文裡,將會採用 TeamCity 這個由 JetBrains 推出的老牌 CI/CD 解決方案。TeamCity 擁有良好的 Web UI,在網頁版的介面裡就可以用滑鼠點選的方式完成所有設定,喜歡用設定檔的開發者,也可以用更具語義的 Kotlin DSL 將設定寫成 Kotlin Script 來自動完成。TeamCity 也支援完整的工具鏈,各程式語言生態系的建置工具大多內建,也可以透過 CLI 或 Docker 來執行客製化動作。TeamCity 高彈性的架構,除了支援客製化 Agent 外,也能讓大型團隊同時運行大量的建置工作。

具體來說,TeamCity 可以幫助我們做哪些事情呢?

  • 在不同的平台及環境平行地建置專案
  • 最佳化程式碼整合循環,確保在程式碼儲存庫裡不會有引發錯誤的程式碼
  • 聰明地排序測試報表,方便迅速查閱
  • 為專案執行程式碼覆蓋率及找出重覆的程式碼
  • 根據建置時間、成功率及多種程式碼品質指標做客製化統計

即便是萌新也別擔心!在接下來的 30 天裡,筆者將從 DevOps、CI/CD、現代軟體開發流程等基本觀念講起,到 TeamCity 的安裝與使用,並模擬數個常見的開發情境,詳細說明如何讓這些現代工具來協助我們更有效率的完成任務,不再被陌生詞彙打擊,讓 TeamCity 變成可以落實到開發工作的助力!

自我揭露

筆者目前就職於 JetBrains 擔任開發者技術推廣工程師(a.k.a 技術傳教士),負責推廣 Kotlin 程式語言、JetBrains IDE 及團隊合作解決方案(包含 TeamCity 在內)。因此在做技術選型時,多會以我熟悉的 JetBrains 技術及產品為主。但在撰寫教學時,仍會客觀公正的帶出每個技術及產品的優缺點、適合使用的情境以及我的個人觀點。盡信書不如無書,讀者在做技術選型時,務必審慎評估自己的專案情境,選擇一個最適合的技術與產品才是上上策。若我的教學剛好就是你的最佳解,那就義無反顧、大膽地用下去吧!我很期待能幫助到任何需要幫助的朋友!

準備好了嗎?讓我們一起翻開這本 30 天的指南吧!


下一篇
第二天:什麼是 CI/CD?
系列文
DevOps 萌新的 TeamCity 極速上手寶典31

尚未有邦友留言

立即登入留言