求真百科歡迎當事人提供第一手真實資料,洗刷冤屈,終結網路霸凌。

JENKINS2·X實踐指南檢視原始碼討論檢視歷史

事實揭露 揭密真相
前往: 導覽搜尋

來自 孔夫子網 的圖片

JENKINS2·X實踐指南》,翟志軍 著,出版社:電子工業出版社。

電子工業出版社成立於1982年10月,是工業和信息化部直屬的科技與教育出版社,每年出版新書2400餘種,音像和電子出版物400餘種,期刊8種,出版物內容涵蓋了信息科技的各個專業分支以及工業技術、經濟管理、大眾生活、少兒科普[1]等領域,綜合出版能力位居全國出版行業前列[2]

內容簡介

《Jenkins 2.x 實踐指南》首先介紹筆者對軟件工程生產力的獨到見解,然後通過一個Hello world 示例帶領初學者入門Jenkins pipeline,接下來詳細介紹Jenkins pipeline 的語法,在Jenkins pipeline 中如何實現持續集成、持續交付的各個階段,包括構建、測試、製品管理、部署等,以及當現有pipeline 的步驟不能滿足需求時,擴展Jenkins pipeline 的多種方式。最後介紹Jenkins 如何整合多個第三方系統,以實現ChatOps 及自動化運維;為避免讀者出現「不知從哪裡下手」的情況,本書通過一個簡單的案例介紹如何設計pipeline。

《Jenkins 2.x 實踐指南》的讀者對象包括:希望通過Jenkins 實現持續集成、持續交付、DevOps,以提升團隊生產力的技術人員和管理人員。

目錄

1 關於軟件工程生產力1

1.1 從另一個角度看「提高軟件工程生產力」 1

1.1.1 從勞動力要素考慮提高軟件工程生產力 2

1.1.2 從勞動對象要素考慮提高軟件工程生產力 2

1.1.3 從生產工具要素考慮提高軟件工程生產力 3

1.1.4 生產力三要素的意義3

1.2 Jenkins 介紹 4

1.3 Jenkins 與DevOps 4

1.4 本章小結 5

2 pipeline 入門6

2.1 pipeline 是什麼 6

2.2 Jenkinsfile 又是什麼 7

2.3 pipeline 語法的選擇 7

2.4 創建第一個pipeline 9

2.5 從版本控制庫拉取pipeline 11

2.6 使用Maven 構建Java 應用 12

2.7 本章小結 15

3 pipeline 語法講解16

3.1 必要的Groovy 知識 16

3.2 pipeline 的組成 18

3.2.1 pipeline 最簡結構 18

3.2.2 步驟 19

3.3 post 部分 20

3.4 pipeline 支持的指令 21

3.5 配置pipeline 本身 22

3.6 在聲明式pipeline 中使用腳本 24

3.7 pipeline 內置基礎步驟 25

3.7.1 文件目錄相關步驟 25

3.7.2 製品相關步驟 27

3.7.3 命令相關步驟 28

3.7.4 其他步驟 29

3.7.5 小貼士 31

3.8 本章小結 36

4 環境變量與構建工具37

4.1 環境變量 37

4.1.1 Jenkins 內置變量 37

4.1.2 自定義pipeline 環境變量 38

4.1.3 自定義全局環境變量 39

4.2 構建工具 40

4.2.1 構建工具的選擇 40

4.2.2 tools 指令介紹 41

4.2.3 JDK 環境搭建 41

4.2.4 Maven 42

4.2.5 Go 語言環境搭建 45

4.2.6 Python 環境搭建 46

4.3 利用環境變量支持更多的構建工具 47

4.4 利用tools 作用域實現多版本編譯 48

4.5 本章小結 49

5 代碼質量50

5.1 靜態代碼分析 50

5.1.1 代碼規範檢查 50

5.1.2 使用PMD 進行代碼規範檢查 51

5.1.3 各靜態代碼分析器之間的區別 53

5.2 單元測試 53

5.2.1 JUnit 單元測試報告 53

5.2.2 JaCoCo 實現代碼覆蓋率 55

5.2.3 代碼覆蓋率越高,軟件的質量就越高嗎 58

5.3 性能測試 59

5.3.1 準備性能測試環境 59

5.3.2 運行JMeter 測試 59

5.4 SonarQube:持續代碼質量檢查 61

5.4.1 Maven 與SonarQube 集成 62

5.4.2 Jenkins 與SonarQube 集成 64

5.4.3 使用SonarQube Scanner 實現代碼掃描 67

5.4.4 SonarQube 集成p3c 68

5.4.5 將分析報告推送到GitLab 70

5.5 Allure 測試報告:更美觀的測試報告 72

5.5.1 Allure 測試報告介紹 72

5.5.2 集成Allure、Maven、Jenkins 73

5.6 當我們談質量時,談的是什麼 76

5.7 本章小結 76

6 觸發pipeline 執行77

6.1 什麼是觸發條件 77

6.2 時間觸發 77

6.2.1 定時執行:cron 77

6.2.2 輪詢代碼倉庫:pollSCM 79

6.3 事件觸發 79

6.3.1 由上游任務觸發:upstream 79

6.3.2 GitLab 通知觸發 80

6.3.3 在pipeline 中實現GitLab trigger 84

6.4 將構建狀態信息推送到GitLab 85

6.5 使用Generic Webhook Trigger 插件實現觸發 87

6.5.1 從Webhook 請求中提取參數值 89

6.5.2 觸發具體某個Jenkins 項目 90

6.5.3 根據請求參數值判斷是否觸發Jenkins 項目執行 91

6.5.4 控制打印內容 91

6.5.5 控制響應 92

6.6 本章小結 92

7 多分支構建93

7.1 創建多分支pipeline 93

7.2 根據分支部署到不同的環境 96

7.3 when 指令的用法 97

7.4 GitLab trigger 對多分支pipeline 的支持 99

7.5 Generic Webhook Trigger 插件在多分支pipeline 場景下的應用 99

7.6 本章小結 100

8 參數化pipeline 101

8.1 什麼是參數化pipeline 101

8.2 使用parameters 指令 101

8.2.1 parameters 指令支持的參數類型 102

8.2.2 多參數 104

8.3 由另一個pipeline 傳參並觸發 104

8.4 使用Conditional BuildStep 插件處理複雜的判斷邏輯 106

8.5 使用input 步驟 107

8.5.1 input 步驟的簡單用法 108

8.5.2 input 步驟的複雜用法 109

8.6 小貼士 111

8.6.1 獲取上游pipeline 的信息 111

8.6.2 設置手動輸入步驟超時後,pipeline 自動中止 111

8.7 本章小結 111

9 憑證管理112

9.1 為什麼要管理憑證 112

9.2 憑證是什麼 112

9.3 創建憑證 113

9.4 常用憑證 114

9.4.1 Secret text 114

9.4.2 Username with password 115

9.4.3 Secret file 115

9.4.4 SSH Username with private key 116

9.5 優雅地使用憑證 117

9.6 使用HashiCorp Vault 118

9.6.1 HashiCorp Vault 介紹 118

9.6.2 集成HashiCorp Vault 118

9.7 在Jenkins 日誌中隱藏敏感信息 120

9.8 本章小結 122

10 製品管理123

10.1 製品是什麼 123

10.2 製品管理倉庫 123

10.3 過渡到製品庫 124

10.4 管理Java 棧製品 125

10.4.1 使用Maven 發布製品到Nexus 中 125

10.4.2 使用Nexus 插件發布製品 127

10.5 使用Nexus 管理Docker 鏡像 128

10.5.1 Nexus:創建Docker 私有倉庫 129

10.5.2 創建Docker 私有倉庫憑證 130

10.5.3 構建並發布Docker 鏡像 130

10.5.4 小貼士 131

10.6 管理原始製品 131

10.6.1 創建raw 倉庫 131

10.6.2 上傳製品,獲取製品 132

10.7 從其他pipeline 中拷貝製品 134

10.8 版本號管理 135

10.8.1 語義化版本 135

10.8.2 版本號的作用 136

10.8.3 方便生成版本號的Version Number 插件 137

10.9 小貼士 138

10.9.1 Nexus 匿名用戶權限問題 138

10.9.2 製品庫的容量要大 139

10.10 本章小結 139

11 可視化構建及視圖140

11.1 Green Balls 插件 140

11.2 Build Monitor View 插件 141

11.3 使用視圖 143

11.3.1 使用項目的維度建立視圖 143

11.3.2 設置默認視圖 145

11.4 本章小結 146

12 自動化部署147

12.1 關於部署有什麼好說的 147

12.1.1 部署不等於發布 147

12.1.2 什麼是自動化部署 148

12.1.3 自動化運維工具解決的問題 148

12.2 Jenkins 集成Ansible 實現自動化部署 149

12.2.1 Ansible 介紹 149

12.2.2 Jenkins 與Ansible 集成 150

12.2.3 Ansible 插件詳解 153

12.3 手動部署比自動化部署更可靠嗎 156

12.4 如何開始自動化部署 157

12.5 小貼士 158

12.6 本章小結 159

13 通知160

13.1 郵件通知 160

13.1.1 使用Jenkins 內置郵件通知功能 160

13.1.2 使用Email Extension 插件發送通知 162

13.2 釘釘通知 164

13.3 HTTP 請求通知 166

13.4 本章小結 168

14 分布式構建與並行構建 169

14.1 Jenkins 架構 169

14.2 增加agent 170

14.2.1 對agent 打標籤 170

14.2.2 通過JNLP 協議增加agent 171

14.2.3 通過JNLP 協議增加Windows agent 175

14.2.4 通過Swarm 插件增加agent 175

14.2.5 agent 部分詳解 176

14.2.6 小結 180

14.3 將構建任務交給Docker 180

14.3.1 在Jenkins agent 上安裝Docker 180

14.3.2 使用Docker 180

14.3.3 配置Docker 私有倉庫 181

14.4 並行構建 182

14.4.1 在不同的分支上應用並行構建 183

14.4.2 並行步驟 184

14.4.3 並行階段與並行步驟之間的區別 185

14.5 本章小結 185

15 擴展pipeline 186

15.1 為什麼要擴展pipeline 186

15.2 在pipeline 中定義函數 186

15.3 使用共享庫擴展 187

15.3.1 創建共享庫 187

15.3.2 使用共享庫 189

15.3.3 @Library 的更多用法 189

15.3.4 共享庫結構詳細介紹 190

15.3.5 使用共享庫實現pipeline 模板 192

15.4 通過Jenkins 插件實現pipeline 步驟 193

15.4.1 生成Jenkins 插件代碼骨架 193

15.4.2 啟動Jenkins 測試:mvn hpi:run 196

15.4.3 在Jenkinsfile 中使用greet 步驟 196

15.4.4 全局配置插件 197

15.5 本章小結 199

16 Jenkins 運維200

16.1 認證管理 200

16.1.1 使用Jenkins 自帶的用戶數據庫 200

16.1.2 使用LDAP 認證 202

16.2 授權管理 204

16.2.1 使用Role-based Authorization Strategy 插件授權 205

16.2.2 管理角色 206

16.2.3 權限大全 207

16.2.4 角色分配 208

16.2.5 小結 210

16.3 Jenkins 監控 210

16.3.1 使用Monitoring 插件監控 210

16.3.2 使用Prometheus 監控 211

16.4 Jenkins 備份 213

16.4.1 JENKINS_HOME 介紹 213

16.4.2 使用Periodic Backup 插件進行備份 214

16.5 漢化 216

16.6 Jenkins 配置即代碼 216

16.7 使用init.groovy 配置Jenkins 217

16.8 本章小結 219

17 自動化運維經驗 220

17.1 小團隊自動化運維實踐經驗 220

17.1.1 先做監控和告警 220

17.1.2 一開始就應該做配置版本化 223

17.1.3 Jenkins 化:將打包工作交給Jenkins 223

17.1.4 將製品交給Nexus 管理 224

17.1.5 讓Jenkins 幫助我們執行Ansible 225

17.1.6 小結 225

17.2 ChatOps 實踐 226

17.2.1 Rocket.Chat 226

17.2.2 Hubot 227

17.2.3 Hubot 與Jenkins 集成 229

17.2.4 Jenkins 推送消息到Rocket.Chat 231

17.3 本章小結 231

18 如何設計pipeline 232

18.1 設計pipeline 的步驟 232

18.2 以X 網站為例,設計pipeline 233

18.3 X 網站pipeline 詳解 236

18.3.1 儘可能將所有的具體操作都隱藏到共享庫中 236

18.3.2 只生成一次製品 236

18.3.3 對不同環境採用同一種部署方式 237

18.3.4 配置版本化 238

18.3.5 系統集成測試 238

18.3.6 如何實現指定版本部署 238

18.3.7 主幹開發,分支發布 239

18.4 本章小結239

參考文獻

  1. 100部科普經典名著,豆瓣,2018-04-26
  2. 關於我們,電子工業出版社