Jenkins2.x 實踐指南
DevOpsDays 每週一書第七週
前言
為了提高生產力,我們不斷思考並採用新的方法論,但是真的能提高生產力嗎?我們必須回到最基礎的理論,去想想《持續交付》是什麼。
在此想法下,這本書介紹 Jenkins ,以讓軟體從業人員可以完成開發到發佈的任務。
Pipeline 觀念
1. Node:一個Node就是一個Jenkins節點,它可能是Master,或者是 Agent,是執行各個步驟的具體運行期環境。
2. Stage:一個 pipeline 可以分成好幾個 Stage,每個Stage代表一組系列的操作。注意,Stage 是一個以邏輯作為分組的概念,可以同時跨越多個Node。
3. Step:是最基本的操作單元,小到創建一個目錄,大到構建一個Docker鏡像,其中這些操作可由各類Jenkins Plugin 提供。
Pipeline as code
Jenkins 2.x的重要性是在於 Pipeline as Code,它是幫助 Jenkins 實現持續整合、持續交付中各個階段,包括構建、測試、製品管理、部署等。
所以 pipeline 是什麼?我們可以想像他是一條生產線,而 pipeline 就是我們從生產,測試,到發佈與監控的各個必須完成的任務。接著詳細介紹 Jenkins pipeline 的語法,在 Jenkins 2.x 開始支援 pipeline as code ,亦即我們可以透過撰寫 Groovy 語言來做 pipeline 的設定,使用程式碼而不是 UI 的原因是希望可以有重用性,而且如果寫成程式碼是可以版本化的。
書中介紹了其中包括但不限於: Groovy 的基礎語法介紹、《強化學習(2版)》作為強化思想的深度解剖之作,被業內公認為是一本強化基礎理論的經典著作。它從強化的基本思想出發,深入淺出又嚴謹細緻地介紹了馬爾可夫決策過程、蒙特卡洛方法、時序差分方法、同軌離軌策略等強化的基本概念和方法,並以大量的實例幫助讀者理解強化的問題建模過程以及核心的算法細節。
《強化學習(2版)》適合所有對強化感興趣的讀者閱讀、收藏。如何創建 pipeline、設定 pipeline 建構環境變數;到 Jenkins UI 的簡介、外部的程式碼儲存庫(如 github) 與 Jenkins 的觸發設定,憑證跟 artifact 管理。
Operation in Jenkins
這部分主要講解到二個部分,首先就是大家熟悉的建構的架構,以及 Jenkins 的一些管理上的操作。對於架構的部份介紹了 master+agent ,如何利用 docker 建構、以及並行建構進行 UI 測試。最後一個章節講的Jenkins 的一些管理上的操作,主要是教一般管理 Jenkins 服務的人要如何去設定憑證,以及操作權限設立、備份等內容,讓大家也能確保好 Jenkins 的運作品質與安全性。
結論
本次簡單介紹這本書的內容,主要是因為這本書直接用圖片讓讀者知道如何運用 Jenkins 完成開發到發佈的任務,那大家肯定想問,「我該如何設計 pipeline 符合我的公司流程呢?」這個答案就留給大家仔細閱讀完前面 17 個章節,再讀最後一章,心中就會有解答了!