還記得筆者第一個接觸的程式語言是 PHP,其直譯的設計、簡單不複雜的語法,任何人只需要準備一個副檔名是 .php 的純文字檔案,寫一小段混雜著 HTML 和 PHP 程式碼,用 FTP 丟到一台裝有 PHP 的主機就可以擁有一個「動態」網站。你說這樣寫不髒嗎?很髒。你說這樣寫當網站大了以後不會很難維護?不用懷疑,真的超難維護。
雖然這樣寫有很多的問題,但我們不得不承認這樣亂糟糟的開發方式對於萌新來說卻是
簡單!直覺!好上手!
反觀現代開發工具鏈,從環境架設、工具安裝、語法特性、架構模式到雲端部署,幾乎每一個環節都可以寫一部 30 天的鐵人賽。雖然每一個技術的演進都是為了更長遠的開發願景而設計,但門檻也同時增高,別說對新手不友善,冗長且繁瑣的步驟有時連老手都踩坑連連。
難道在嚴謹的開發流程與流暢的開發體驗之間沒辦法平衡嗎?
當然可以!這時就是使用 CI/CD 伺服器的最佳時機!
開發者寫程式大多都是為了解決重複執行的動作,而像 CI/CD 這種伺服器軟體就是為了這樣的目的而存在。簡單來說,你可以把它想像成機器人,只要你交代它做的事情,它就會按部就班地完成,而且做百遍也不出錯、做千遍也不厭倦,是不是很棒?
所以,當發現我們一直在重複地做某些動作,比方說在終端機裡打同一個指令、把產生出來的檔案上傳到伺服器上、需要定期監看某些數值或特定報表時,就可以把這些動作抽取出來,交給 CI/CD 伺服器來處理。我們只需要在開發流程裡設計一個環節觸發它運作,然後定期到 CI/CD 伺服器上看結果即可。
市面上的 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 變成可以落實到開發工作的助力!
準備好了嗎?讓我們一起翻開這本 30 天的指南吧!