-- 會員 / 註冊 --  
 帳號:
 密碼:
  | 註冊 | 忘記密碼
3/26 新書到! 3/19 新書到! 3/14 新書到! 12/12 新書到!
購書流程Q & A站務留言版客服信箱
3ds MaxMayaRhinoAfter EffectsSketchUpZBrushPainterUnity
PhotoShopAutoCadMasterCamSolidWorksCreoUGRevitNuke
C#CC++Java遊戲程式Linux嵌入式PLCFPGAMatlab
駭客資料庫搜索引擎影像處理FluentVR+ARANSYS深度學習
單晶片AVROpenGLArduinoRaspberry Pi電路設計CadenceProtel
HadoopPythonStm32CortexLabview手機程式AndroidiPhone
可查書名,作者,ISBN,3dwoo書號
詳細書籍分類

Jenkins 2.x實踐指南

( 簡體 字)
作者:翟志軍類別:1. -> 程式設計 -> 綜合
譯者:
出版社:電子工業出版社Jenkins 2.x實踐指南 3dWoo書號: 50933
詢問書籍請說出此書號!

缺書
NT售價: 395

出版日:4/1/2019
頁數:252
光碟數:0
站長推薦:
印刷:黑白印刷語系: ( 簡體 版 )
加入購物車 加到我的最愛
(請先登入會員)
ISBN:9787121360503
作者序 | 譯者序 | 前言 | 內容簡介 | 目錄 | 
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證)
作者序:

譯者序:

前言:

2016 年 4 月 Jenkins 發布了 2.0 版本,開始支持 pipeline as code。同年 11 月,pipeline as code 作為“采用”項出現在 ThoughtWorks 技術雷達的采用環中。
2019 年 1 月,筆者見同行在微信群里吐槽 Jenkins 的老舊,比如 Jenkins 不支持手動 stage。經過了解,筆者大概猜到這位朋友還在使用 Jenkins 1.x,或者知識還停留在 Jenkins 1.x 上。因為他說的問題,在 Jenkins 2.x 中已經不存在了。
這里并不是想說這位朋友不了解 Jenkins 2.x,而是想說 Jenkins 1.x 已經成為過去式。長期以來,在中文網站上能搜到的關于 Jenkins 的文章大多停留在 Jenkins 1.x 時代。這樣想來,也就能理解為什么這位朋友會有這樣的誤解了。
自 Jenkins 2.0 發布已有三個年頭,據筆者所知,目前市面上還沒有 pipeline as code 實踐方面的書籍。中文的 Jenkins 書籍,只有《Jenkins 權威指南》一本,其中也并沒有 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 技術在實際工作中如何應用的讀者。
最后,感謝策劃編輯鄭柳潔女士為本書付出的努力;感謝劉杜康和黃獻華在百忙之中對部分章節的審校;感謝黃峰達在出版方面的幫助;感謝王曉峰在部署目錄命名方面的建議;感謝志平幫助處理我的個人照片;感謝妻子的理解與支持。
內容簡介:

本書首先介紹筆者對軟件工程生產力的獨到見解。其次通過一個Hello world帶領初學者入門Jenkins pipeline。接著詳細介紹Jenkins pipeline的語法,以及在Jenkins pipeline中如何實現持續集成、持續交付中各個階段,包括構建、測試、制品管理、部署等;在發現現有pipeline的步驟不能滿足需求時,擴展Jenkins pipeline多種方式。本書第17章介紹了Jenkins如何整合多個第三方系統,以實現ChatOps及自動化運維。為避免讀者“不知從哪下手”的情況,本書通過一個簡單的案例介紹從無到有的設計pipeline。


目錄:

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
后記 240
序: