內容提要
《Jenkins權威指南》從實踐者的角度,在講解Jenkins基本原理的同時,深入到持續集成、持續交付領域,為讀者梳理出如何使用Jenkins設計和實現一個自動化的、周期性的集成測試過程,幫助讀者理解Jenkins適用於什麼場景。《Jenkins權威指南》中首先介紹Jenkins以及持續集成、持續交付的基礎知識;然後安裝Jenkins和配置Jenkins伺服器,使用Jenkins建立構建作業、進行自動化測試,介紹Jenkins支持的幾種安全模式,如何使用Jenkins進行訊息通知,如何確保代碼質量;最後進階展示如何建立高級的和分散式的構建,如何進行自動化的部署和交付以及對Jenkins的運維。
《Jenkins權威指南》適合想要了解Jenkins工具以及持續集成、持續交付理念的開發和測試人員閱讀,也非常適合基於Jenkins構建持續集成、持續交付平台的技術人員閱讀。
目錄
序 xvii
前言 xix
第1 章 Jenkins 簡介 1
簡介 1
持續集成基礎 1
Jenkins 簡介(née Hudson) 3
從Hudson 到Jenkins——一個簡短的故事 3
應該使用Jenkins 還是Hudson 4
引進持續集成到你的公司 5
階段1——無構建伺服器 5
階段2——夜間構建 6
階段3——夜間構建加自動化測試 6
階段4——加入度量指標 6
階段5——更認真地對待測試 6
階段6——自動化驗收測試和自動化部署 7
階段7——持續部署 7
接下來做什麼呢 7
第2 章 邁入Jenkins 的第一步 9
簡介 9
準備環境 9
安裝Java 10
安裝Git 11
創建GitHub 賬號 11
配置SSH 密鑰 11
創建代碼庫分支 12
啟動Jenkins 13
配置工具 17
配置你的Maven 設定 18
配置JDK 19
通知 20
設定Git 20
你的第一個Jenkins 構建作業 21
你的第一個構建作業 26
更多的報告——顯示Javadoc 33
添加代碼覆蓋率和其他度量 34
小結 40
第3 章 安裝Jenkins 41
簡介 41
下載和安裝Jenkins 41
為Jenkins 準備好構建伺服器 44
Jenkins 主目錄 45
在Debian 或者Ubuntu 系統上安裝Jenkins 47
在Red Hat、Fedora 或者CentOS 上安裝Jenkins 48
在SUSE 或者OpenSUSE 上安裝Jenkins 49
以單機套用形式運行Jenkins 49
基於Apache 伺服器運行Jenkins 53
在套用伺服器上運行Jenkins 54
記憶體方面的考慮 54
安裝Jenkins 為一個Windows 服務 55
Jenkins 主目錄里有什麼 59
備份Jenkins 數據 62
升級Jenkins 安裝 63
小結 64
第4 章 配置Jenkins 伺服器 65
簡介 65
配置面板——Manage Jenkins 界面 65
配置系統環境 68
配置全局屬性 69
配置JDK 70
配置構建工具 72
Maven 73
Ant 74
Shell 腳本 75
配置版本控制工具 75
配置Subversion 75
配置CVS 75
配置郵件伺服器 76
配置代理 77
小結 78
第5 章 設定構建作業 79
簡介 79
Jenkins 構建作業 79
創建自由式構建作業 80
通用選項 81
高級項目選項 82
配置原始碼管理 83
用Subversion 工作 84
使用Git 86
Build Triggers 96
構建作業完成後觸發下一個 97
計畫構建作業 97
輪詢SCM 98
遠程觸發構建 99
手工構建作業 101
構建步驟 101
Maven 構建步驟 102
Ant 構建步驟 103
執行Shell 或Windows 批處理命令 104
在構建中使用Jenkins 環境變數 105
運行Groovy 腳本 108
用其他語言構建項目 110
構建後的操作 110
報告測試結果 110
歸檔構建產物 110
通知 114
構建其他的項目 114
運行新的構建作業 115
使用Maven 構建作業 115
每當SNAPSHOT(快照)依賴被建立時都要進行構建 116
配置Maven 構建 116
構建後期操作 118
部署到企業倉庫管理器 118
部署到商業企業倉庫管理器 122
管理模組 122
Maven 構建作業中額外的構建步驟 122
用其他語言使用Jenkins 124
用Grails 構建項目 124
用Gradle 構建項目 126
用Visual Studio MSBuild 構建項目 129
用NAnt 構建項目 130
使用Ruby 和Ruby on Rails 構建項目 130
小結 132
第6 章 自動化測試 133
簡介 133
自動化單元和集成測試 134
在Jenkins 中配置測試報告 135
顯示測試結果 137
忽略測試 140
代碼覆蓋率 142
使用Cobertura 測量代碼覆蓋率 143
使用Clover 測量代碼覆蓋率 152
自動化驗收測試 154
JMeter 自動化性能測試 157
請求幫助!我的測試運行得太慢了 165
添加更多的硬體 166
運行更少的集成/ 功能測試 166
並行運行測試 167
小結 167
第7 章 Jenkins 安全 169
簡介 169
激活Jenkins 安全 169
Jenkins 安全實例 170
安全域——定義Jenkins 用戶 171
使用Jenkins 內置用戶資料庫 171
使用LDAP 倉庫 174
使用微軟活動目錄 176
使用UNIX 用戶和用戶組 177
Servlet 容器授權 177
使用Atlassian Crowd 178
與其他系統集成 179
授權——誰可以做什麼 181
安全矩陣 181
基於項目的安全 185
基於角色的安全 188
審計——跟蹤用戶行為 190
小結 193
第8 章 通知 195
簡介 195
電子郵件通知 195
更高級的電子郵件通知 197
聲明構建 200
RSS 訂閱 202
構建分發器 202
即時訊息 204
用Jabber 進行IM 通知 204
使用IRC 的IM 通知 209
IRC 通知 209
桌面通知器 212
通過Notifo 通知 213
移動通知 216
簡訊通知 216
製造噪聲 219
極端反饋設備 221
小結 222
第9 章 代碼質量 225
簡介 225
構建過程中的代碼質量 226
受歡迎的Java 和Groovy 代碼質量分析工具 227
Checkstyle 227
PMD/CPD230
FindBugs 235
CodeNarc237
使用Violations 外掛程式報告代碼質量問題 238
與自由風格下的構建作業一起工作 239
使用Maven 構建作業 242
使用Checkstyle、PMD 和FindBugs 報告 244
報告代碼複雜度 247
報告未完成的任務 248
集成Sonar 249
小結 253
第10 章 高級構建 255
簡介 255
參數化構建作業 255
創建一個參數化構建作業 256
為構建適配參數化構建腳本 257
高級參數類型 259
使用Subversion 標籤構建 260
使用Git 標籤構建 261
遠程啟動參數化構建作業 262
參數化構建作業歷史 263
參數化觸發263
多重結構的構建作業 266
搭建多重結構構建 266
配置從節點軸 267
配置JDK 軸 268
自定義軸 268
執行多重結構構建 268
自動生成Maven 構建作業 271
配置作業 271
使用繼承復用作業配置 273
外掛程式支持 275
自由式作業 278
構建協作 278
在Jenkins 中並行構建 279
依賴關係圖 279
連線 280
Locks and Latches 外掛程式 281
構建管道及最佳化 282
通過M2Release 外掛程式管理Maven 版本發布 283
複製構建產物 286
構建進階 289
匯總測試結果 295
構建管道 296
小結 299
第11 章 分散式構建 301
簡介 301
Jenkins 分散式構建架構 301
Jenkins 主/ 從策略 302
主節點使用SSH 啟動從節點代理 303
使用Java Web Start 手工啟動從代理 307
把Jenkins 從節點安裝為Windows 服務 309
無主節點模式啟動從節點 310
以遠程服務方式啟動Windows 從節點 310
把構建作業與一個或一組從節點關聯 311
節點監控 313
雲計算 314
使用Amazon EC2 314
使用CloudBees DEV@cloud 服務 318
小結 319
第12 章 自動化部署和持續交付 321
簡介 . 321
實現自動化和持續部署 322
部署腳本 322
資料庫更新 322
冒煙測試 325
回滾更改 326
部署到應用程式伺服器上 326
部署一個Java 套用 327
部署像Ruby 和PHP 這樣基於腳本的應用程式 336
小結 339
第13 章 Jenkins 的維護341
簡介 341
監控磁碟空間 341
使用Disk Usage 外掛程式 343
磁碟使用及Jenkins Maven 項目類型 344
監控伺服器負載 345
備份配置 346
Jenkins 備份基礎 346
使用備份外掛程式 348
更為輕量的自動備份 350
構建作業歸檔 350
構建遷移 351
小結 355
附錄A 自動化你的單元和集成測試 357
索引 367