本書首先介紹筆者對軟體工程生產力的獨到見解。透過一個Hello world帶領初學者入門Jenkins pipeline。接著詳細介紹Jenkins pipeline的語法,以及在Jenkins pipeline中如何實現持續整合、持續發佈中各個階段,包括建置、測試、製品管理、部署等。
在發現現有pipeline的步驟不能滿足需求時,擴展Jenkins pipeline多種方式。第17章介紹Jenkins如何整合多個協力廠商系統,以實現ChatOps及自動化運行維護的經驗。為避免讀者「不知從何下手」的情況,將透過一個簡單的案例介紹從無到有設計pipeline。
適合讀者群:
對Jenkins 有初步認識,希望透過Jenkins 實現持續整合、持續
發佈、DevOps 的技術人員;希望了解pipeline as code 技術在實際工作中應用的讀者。
本書特色
➣ 詳細介紹Jenkins 2.x核心特性:pipeline as code
➣ 透過案例從無到有設計pipeline
作者簡介:
翟志軍
程式設計師,https://showme.codes 博主。
曾任開源中國產品經理,目前任職於傳統家電製造公司,參與公司IoT系統、DevOps產品的設計與開發,幫助團隊提高軟體生產力。
作者序
前 言
2016 年4 月Jenkins 發佈了2.0 版本(https://jenkins.io/blog /2016/04/26/jenkins-20-is-here/),開始支援pipeline as code。同年11 月,pipeline ascode 作為「採用」項出現在ThoughtWorks 技術雷達(https://www.infoq. cn/article/2016%2F11% 2Fthought works-radar-forecast)的採用環中。
2019 年1 月,筆者見同行在微信群裡吐槽Jenkins 的老舊,例如Jenkins不支援手動stage。經過了解,筆者大概猜到這位朋友還在使用Jenkins1.x,或知識還停留在Jenkins 1.x 上。因為他說的問題,在Jenkins 2.x中已經不存在了。
這裡並不是想說這位朋友不了解Jenkins 2.x,而是想說Jenkins 1.x 已經成為過去式。長期以來,在中文網站上能搜到的關於Jenkins 的文章大多停留在Jenkins 1.x 時代。這樣想來,也就能了解為什麼這位朋友會有這樣的誤解了。
自Jenkins 2.0 發佈已有三年,據筆者所知,市面上還沒有pipeline as code 實作方面的書籍。本書彌補了這一空白,系統地介紹Jenkins 2.x 的pipeline as code。
本書第1 章介紹筆者對軟體工程生產力的獨到見解;第2 章透過一個Hello world 範例帶領初學者入門Jenkins pipeline;第3 章詳細介紹Jenkins pipeline 的語法;第4 ∼ 14 章介紹在Jenkins pipeline 中如何實現持續整合、持續發佈的各個階段,包含建置、測試、製品管理、部署等;第15 章介紹擴充Jenkins pipeline 的多種方式,本章對希望透過Jenkins 實現持續整合、持續發佈平台的讀者非常有幫助;第16 章介紹Jenkins 運行維護相關知識;第17 章介紹筆者整合Jenkins 與多個協力廠商系統,實現ChatOps 及自動化運行維護的經驗;為避免讀者出現「不知從哪裡下手」的情況,第18 章透過一個簡單的案例介紹如何設計pipeline。
筆者建議所有讀者都要閱讀第1 章和第3 章,它們是本書的核心;已經入門Jenkins pipeline 的讀者可以跳過第2 章;而第4 ∼ 14 章可以作為參考手冊使用。
本書適合對Jenkins 有初步認識,希望透過Jenkins 實現持續整合、持續發佈、DevOps 的技術人員,以及希望了解pipeline as code 技術在實際工作中如何應用的讀者。
最後,感謝策劃編輯鄭柳潔女士為本書付出的努力;感謝劉杜康和黃獻華在百忙之中對部分章節的審校;感謝黃峰達在出版方面的幫助;感謝王曉峰在部署目錄命名方面的建議;感謝志平幫助處理我的個人照片;感謝妻子的理解與支援。
前 言
2016 年4 月Jenkins 發佈了2.0 版本(https://jenkins.io/blog /2016/04/26/jenkins-20-is-here/),開始支援pipeline as code。同年11 月,pipeline ascode 作為「採用」項出現在ThoughtWorks 技術雷達(https://www.infoq. cn/article/2016%2F11% 2Fthought works-radar-forecast)的採用環中。
2019 年1 月,筆者見同行在微信群裡吐槽Jenkins 的老舊,例如Jenkins不支援手動stage。經過了解,筆者大概猜到這位朋友還在使用Jenkins1.x,或知識還停留在Jenkins 1.x 上。因為他說的問題,在Jenkins 2.x中已經不存在了。...
目錄
01 關於軟體工程生產力
1.1 從另一個角度看「加強軟體工程生產力」
1.2 Jenkins 介紹
1.3 Jenkins 與DevOps
1.4 本章小結
02 pipeline 入門
2.1 pipeline 是什麼
2.2 Jenkinsfile 又是什麼
2.3 pipeline 語法的選擇
2.4 建立第一個pipeline
2.5 從版本控制函數庫拉取pipeline
2.6 使用Maven 建置Java 應用
2.7 本章小結
03 pipeline 語法說明
3.1 必要的Groovy 知識
3.2 pipeline 的組成
3.3 post 部分
3.4 pipeline 支援的指令
3.5 設定pipeline 本身
3.6 在宣告式pipeline 中使用指令稿
3.7 pipeline 內建基礎步驟
3.8 本章小結
04 環境變數與建置工具
4.1 環境變數
4.2 建置工具
4.3 利用環境變數支援更多的建置工具
4.4 利用tools 作用域實現多版本編譯
4.5 本章小結
05 程式品質
5.1 靜態程式分析
5.2 單元測試
5.3 效能測試
5.4 SonarQube:持續程式品質檢查
5.5 Allure 測試報告:更美觀的測試報告
5.6 當我們談品質時,談的是什麼
5.7 本章小結
06 觸發pipeline 執行
6.1 什麼是觸發條件
6.2 時間觸發
6.3 事件觸發
6.4 將建置狀態資訊發送到GitLab
6.5 使用Generic Webhook Trigger 外掛程式實現觸發
6.6 本章小結
07 多分支建置
7.1 建立多分支pipeline
7.2 根據分支部署到不同的環境
7.3 when 指令的用法
7.4 GitLab trigger 對多分支pipeline 的支援
7.5 Generic Webhook Trigger 外掛程式在多分支pipeline
場景下的應用
7.6 本章小結
08 參數化pipeline
8.1 什麼是參數化pipeline
8.2 使用parameters 指令
8.3 由另一個pipeline 傳參並觸發
8.4 使用Conditional BuildStep 外掛程式處理複雜的判斷邏輯
8.5 使用input 步驟
8.6 小提示
8.7 本章小結
09 憑證管理
9.1 為什麼要管理憑證
9.2 憑證是什麼
9.3 建立憑證
9.4 常用憑證
9.5 優雅地使用憑證
9.6 使用HashiCorp Vault
9.7 在Jenkins 記錄檔中隱藏敏感資訊
9.8 本章小結
10 製品管理
10.1 製品是什麼
10.2 製品管理倉庫
10.3 過渡到製品函數庫
10.4 管理Java 堆疊製品
10.5 使用Nexus 管理Docker 映像檔
10.6 管理原始製品
10.7 從其他pipeline 中拷貝製品
10.8 版本編號管理
10.9 小提示
10.10 本章小結
11 視覺化建置及視圖
11.1 Green Balls 外掛程式
11.2 Build Monitor View 外掛程式
11.3 使用視圖
11.4 本章小結
12 自動化部署
12.1 關於部署有什麼好說的
12.2 Jenkins 整合Ansible 實現自動化部署
12.3 手動部署比自動化部署更可靠嗎
12.4 如何開始自動化部署
12.5 小提示
12.6 本章小結
13 通知
13.1 郵件通知
13.2 釘釘通知
13.3 HTTP 請求通知
13.4 本章小結
14 分散式建置與平行建置
14.1 Jenkins 架構
14.2 增加agen
14.3 將建置工作交給Docker
14.4 平行建置
14.5 本章小結
15 擴充pipeline
15.1 為什麼要擴充pipeline
15.2 在pipeline 中定義函數
15.3 使用共用函數庫擴充
15.4 透過Jenkins 外掛程式實現pipeline 步驟
15.5 本章小結
16 Jenkins 運行維護
16.1 認證管理
16.2 授權管理
16.3 Jenkins 監控
16.4 Jenkins 備份
16.5 中文化
16.6 Jenkins 設定即程式
16.7 使用init.groovy 設定Jenkins
16.8 本章小結
17 自動化運行維護經驗
17.1 小團隊自動化運行維護實作經驗
17.2 ChatOps 實作
17.3 本章小結
18 如何設計pipeline
18.1 設計pipeline 的步驟
18.2 以X 網站為例,設計pipeline
18.3 X 網站pipeline 詳解
18.4 本章小結
A 後記
01 關於軟體工程生產力
1.1 從另一個角度看「加強軟體工程生產力」
1.2 Jenkins 介紹
1.3 Jenkins 與DevOps
1.4 本章小結
02 pipeline 入門
2.1 pipeline 是什麼
2.2 Jenkinsfile 又是什麼
2.3 pipeline 語法的選擇
2.4 建立第一個pipeline
2.5 從版本控制函數庫拉取pipeline
2.6 使用Maven 建置Java 應用
2.7 本章小結
03 pipeline 語法說明
3.1 必要的Groovy 知識
3.2 pipeline 的組成
3.3 post 部分
3.4 pipeline 支援的指令
3.5 設定pipeline 本身
3.6 在宣告式pipeline 中使用指令稿
3.7 pipeline ...
購物須知
退換貨說明:
會員均享有10天的商品猶豫期(含例假日)。若您欲辦理退換貨,請於取得該商品10日內寄回。
辦理退換貨時,請保持商品全新狀態與完整包裝(商品本身、贈品、贈票、附件、內外包裝、保證書、隨貨文件等)一併寄回。若退回商品無法回復原狀者,可能影響退換貨權利之行使或須負擔部分費用。
訂購本商品前請務必詳閱退換貨原則。