Jenkins 2 權威指南
DevOpsDays 每週一書第八週
前言
Pipeline as code,這樣的思維為什麼會出現?這本書透過案例介紹、操作介紹讓你理解 Jenkins 2 怎麼操作之外,也能知道 pipeline as code 去整合其他的關鍵技術、創造自動化、可靠的 pipeline 以及最終建立起 devops 的技術架構的重要性!
註:本次不特別介紹 Blue Ocean 介面操作因為這是心得文,不是操作教學或開箱文
關於 pipeline as code 的重點觀念
我們在這本書中會學到兩個觀念:腳本式流水線、聲明式流水線。
聲明式流水線是透過 Groovy 語言去定義整個 pipeline 要做完所定義的全部工作,而腳本式流水線關注的是節點內執行哪些工作。這部分也包括介紹了 Jenkins 基礎知識, Groovy 的基礎語法介紹、如何創建 pipeline、設定 pipeline 建構環境變數;
配置管理
好的配置管理是交付流水線的基石,因為在一切自動化的基礎下,要如何確保我的產出物有沒有相依到對的套件或 package?所以書中也介紹關於 Jenkins 的基礎設置,程式碼如何管理(例如 Jenkins 如何跟 Github 鉤稽),如何觸發整個流水線進行工作,相依性該如何處理都在中間幾個章節陸續提到。
持續整合
實務上,在開發程式碼的時候,無論任何時候都會有新的程式碼被簽入,所以過往我們要有個團隊負責功能上的整合,透過 Jenkins 來檢測到有變化,讓這個工具就會自動編譯和測試你的應用程序。如果出現問題,它就會馬上通知開發人員,以便他們可以立即著手解決這個問題。這就是 Jenkins 在持續整合上的好處。
持續部署
自動化部署的想法很重要,此過程使每個被測試過的功能可以推送到生產環境中去,我們稱這種實踐就叫做持續部署。
通知與清理等
一般我們在完成部署後,可能需要進行通知或清理, Jenkins 在 post 部分保證在流水線執行後才開始運行,所以我們可以在這邊進行設定,添加通知或者其他的步驟去完成清理、通知或者其他的 Pipeline 結束任務。
Get all in one
在這本書中,介紹了 Jenkins 如何跟 SonarQube、Artifactory 與 Docker 做互動,因為我們要達成持續整合與持續部署,達成《持續交付》的生產力,我們確保寫好的程式能整合起來,測試能夠通過,經過弱掃確保程式的安全性,最後透過 Docker 來做配置程式以利運作,這中間, Jenkins 就是掌管每個步驟是否確實執行的重要的工具之一。至於 Jenkins 本身也是一個軟體服務,我們要怎麼確保它的穩定度呢?所以這本書最後一個章節就在說明如何真對流水線進行維運,以降低發生錯誤時造成價值交付延誤的風險。
總結
俗話說,工欲善其事,必先利其器,在大 Web 時代,大家追求的是又快又好,所以為了快又好,基礎建設就不能馬虎。透過 Jenkins 以流水線為基底出發,我們可以將交付軟體價值的工作拆成好幾個階段,讓人工處理且容易出錯的地方給自動化,寫下程式碼作為自我文件供接手的人參考,既能傳承經驗也能減少失誤發生!
如果對於想要導入流水線發布方式的人,或是不知道選定哪個服務開始做流水線,或是 Jenkins 已經是你確定要執行的解決方案,這本書非常適合你拿來閱讀並且實踐,讓你開始建設你的 pipeline!