本書結(jié)合實(shí)例介紹持續(xù)集成與持續(xù)部署過(guò)程中的相關(guān)知識(shí),包括從源代碼管理(版本管理、代碼掃描、代碼審核)到集成部署(編譯打包、流水線、容器化部署),再到自動(dòng)化測(cè)試(單元測(cè)試、接口測(cè)試),最后到生產(chǎn)發(fā)布(鏡像倉(cāng)庫(kù)、鏡像管理、日志管理、網(wǎng)絡(luò)管理、持久化方案、服務(wù)發(fā)現(xiàn)、服務(wù)編排等)的整個(gè)過(guò)程。參照書中內(nèi)容即可在企業(yè)中落地持續(xù)集成與持續(xù)部署。
本書適合有志于投身運(yùn)維的讀者,以及還處在手工部署環(huán)境中的測(cè)試團(tuán)隊(duì)、運(yùn)維團(tuán)隊(duì)、開發(fā)團(tuán)隊(duì)。由于可操作性較強(qiáng),本書也適合作為大專院校相關(guān)專業(yè)師生的學(xué)習(xí)用書和培訓(xùn)學(xué)校的教材。
騰訊研發(fā)總監(jiān)leo fan,阿里巴巴高級(jí)技術(shù)專家吳毓雄,滴滴出行高級(jí)技術(shù)專家任楊,飛谷云創(chuàng)始人\大數(shù)據(jù)實(shí)戰(zhàn)專家\平安壹錢包前大數(shù)據(jù)架構(gòu)師張粵磊聯(lián)合推薦
來(lái)自一線的實(shí)踐經(jīng)驗(yàn),深入呈現(xiàn)技術(shù)細(xì)節(jié);詳實(shí)的實(shí)操示例,即學(xué)即用的實(shí)戰(zhàn)技術(shù)
講解了持續(xù)集成中引人入勝的內(nèi)容:CI/CD到底要解決什么問題?它與DevOps之間的關(guān)系是怎樣的?程序員如何用工具化的系統(tǒng)持續(xù)進(jìn)行代碼的版本管理、構(gòu)建、打包、集成、測(cè)試和部署?利用云平臺(tái)和容器技術(shù)實(shí)現(xiàn)彈性伸縮價(jià)值等
錢琪,曾任職于AMD、思科、中國(guó)電信、VMWare等企業(yè),擅長(zhǎng)測(cè)試開發(fā)、自動(dòng)化測(cè)試、性能測(cè)試,擁有豐富的持續(xù)集成、持續(xù)部署實(shí)踐經(jīng)驗(yàn)。
孫金飛,萬(wàn)達(dá)網(wǎng)科質(zhì)量管理部技術(shù)專家,曾擔(dān)任平安付、挖財(cái)?shù)裙緶y(cè)試總監(jiān),服務(wù)過(guò)騰訊、淘寶、百度、平安、挖財(cái)?shù)绕髽I(yè),擅長(zhǎng)測(cè)試開發(fā)、自動(dòng)化測(cè)試、測(cè)試管理、性能測(cè)試,擁有豐富的持續(xù)集成、持續(xù)部署實(shí)踐經(jīng)驗(yàn)。
陳志勇(天勝),曾任職于諾亞舟、上汽通用、平安集團(tuán)、中國(guó)電信等企業(yè),從事DevOps開發(fā)、性能測(cè)試工作,擁有豐富的開發(fā)、項(xiàng)目管理、性能測(cè)試經(jīng)驗(yàn),著有《全棧性能測(cè)試修煉寶典JMeter實(shí)戰(zhàn)》。
李誠(chéng)誠(chéng),翼支付消費(fèi)金融事業(yè)群自動(dòng)化測(cè)試專家,曾任職于平安付、挖財(cái),擅長(zhǎng)性能測(cè)試、自動(dòng)化測(cè)試、測(cè)試開發(fā),擁有豐富的持續(xù)集成、性能測(cè)試經(jīng)驗(yàn)。
目錄
第 一部分 價(jià)值驅(qū)動(dòng)
第 1章 為什么要CI&CD 2
1.1 CI&CD的價(jià)值 2
1.2 CI&CD帶來(lái)的變化 3
1.3 CI&CD實(shí)施現(xiàn)狀 4
1.4 CI&CD技術(shù)!5
1.5 大規(guī)模部署的煩惱 6
1.6 實(shí)施云平臺(tái)化 7
1.7 本章小結(jié) 11
第二部分 持續(xù)集成
第 2章 代碼管理 14
2.1 代碼版本管理工具GitLab 14
2.1.1 安裝GitLab CE 14
2.1.2 配置GitLab 24
2.1.3 GitLab的使用說(shuō)明 33
2.2 代碼掃描和管理平臺(tái)
SonarQube 42
2.2.1 SonarQube平臺(tái)的組成
結(jié)構(gòu)和集成 42
2.2.2 SonarQube服務(wù)器 44
2.2.3 SonarQube掃描器 52
2.2.4 SonarQube服務(wù)器的
界面 56
2.3 代碼審核工具Gerrit 65
2.3.1 Gerrit 65
2.3.2 Gerrit的安裝和配置 66
2.3.3 GitWeb的安裝和配置 75
2.3.4 在Gerrit中集成LDAP
認(rèn)證 78
2.3.5 Gerrit和GitLab的
集成 79
2.3.6 Gerrit的基本用法 86
2.4 本章小結(jié) 92
第3章 Jenkins基礎(chǔ)知識(shí) 93
3.1 Jenkins 93
3.2 Jenkins的安裝 94
3.2.1 使用Docker安裝
Jenkins 94
3.2.2 為CentOS虛擬機(jī)安裝
Jenkins 106
3.3 Jenkins Home目錄 108
3.4 Jenkins的升級(jí)以及備份和
還原 111
3.4.1 升級(jí)Jenkins 111
3.4.2 備份和還原Jenkins 111
3.5 Jenkins的分布式構(gòu)建模式 114
3.6 Jenkins配置 120
3.6.1 Jenkins界面 120
3.6.2 Jenkins系統(tǒng)配置 125
3.6.3 Jenkins全局安全配置 130
3.6.4 Jenkins全局工具配置 136
3.6.5 Jenkins CLI 140
3.7 Jenkins插件的配置和使用 144
3.7.1 強(qiáng)大的插件功能 144
3.7.2 安裝和更新插件 145
3.8 本章小結(jié) 150
第4章 持續(xù)集成實(shí)戰(zhàn) 151
4.1 源碼下拉和管理 152
4.1.1 創(chuàng)建任務(wù) 152
4.1.2 Git源碼管理 153
4.1.3 憑據(jù) 154
4.1.4 分支管理 158
4.1.5 Git源碼管理的附加
操作 159
4.1.6 拉取多個(gè)Git倉(cāng)庫(kù) 161
4.2 Maven源碼構(gòu)建 162
4.2.1 構(gòu)建一個(gè)Maven
項(xiàng)目 162
4.2.2 配置Build模塊 164
4.3 集成SonarQube進(jìn)行代碼
掃描 167
4.3.1 對(duì)Sonar和Jenkins進(jìn)行
集成 167
4.3.2 為Maven任務(wù)配置Sonar
掃描 169
4.4 觸發(fā)設(shè)定 173
4.4.1 定時(shí)構(gòu)建 173
4.4.2 遠(yuǎn)程構(gòu)建 174
4.4.3 GitLab觸發(fā)構(gòu)建 175
4.4.4 Gerrit觸發(fā)構(gòu)建 178
4.4.5 其他工程構(gòu)建后觸發(fā) 184
4.5 郵件提醒 184
4.5.1 Jenkins全局配置 184
4.5.2 在Jenkins任務(wù)中配置
郵件提醒 185
4.5.3 郵件模板配置 187
4.6 任務(wù)參數(shù)化配置 197
4.6.1 Jenkins自帶常用
參數(shù) 198
4.6.2 Node參數(shù) 199
4.6.3 Git參數(shù) 201
4.6.4 動(dòng)態(tài)選擇參數(shù) 203
4.7 上下游任務(wù)設(shè)定 207
4.8 執(zhí)行條件設(shè)定 209
4.8.1 設(shè)置Conditional step
(single) 210
4.8.2 設(shè)置Conditional steps
(multiple) 214
4.9 實(shí)例一:Git代碼提交觸發(fā)+Maven構(gòu)建+代碼掃描+郵件通知 214
4.9.1 Build部分配置 215
4.9.2 Artifactory構(gòu)建倉(cāng)庫(kù)
配置 215
4.10 實(shí)例二:Git源碼下拉+參數(shù)化
構(gòu)建+多環(huán)境部署 219
4.10.1 任務(wù)參數(shù)化 220
4.10.2 多項(xiàng)目代碼下拉 222
4.10.3 配置多階段子任務(wù) 223
4.10.4 在子任務(wù)之間傳遞部署
執(zhí)行文件 225
4.11 Pipeline和Blue Ocean 227
4.11.1 Jenkins Pipeline 227
4.11.2 多分支流水線任務(wù) 239
4.11.3 通過(guò)Blue Ocean展示和
創(chuàng)建任務(wù) 242
4.12 在Jenkins中集成Kubernetes 245
4.12.1 基于Kubernetes集群的
Jenkins 245
4.12.2 安裝Jenkins Master 246
4.12.3 配置Jenkins Master 252
4.12.4 通過(guò)Pipeline腳本創(chuàng)建
動(dòng)態(tài)Slave節(jié)點(diǎn) 256
4.13 本章小結(jié) 258
第5章 自動(dòng)化測(cè)試集成 259
5.1 Jenkins+Maven+JMeter 259
5.1.1 環(huán)境準(zhǔn)備 259
5.1.2 Maven+JMeter執(zhí)行 260
5.1.3 Jenkins+Maven+JMeter
任務(wù)構(gòu)建 270
5.2 Jenkins+Robot Framework 270
5.2.1 Robot Framework介紹和
安裝 270
5.2.2 在Robot Framework中
集成Jenkins 275
5.3 本章小結(jié) 283
第三部分 持續(xù)部署
第6章 持續(xù)部署設(shè)計(jì) 286
6.1 持續(xù)部署的問題 286
6.2 解決方案 288
6.2.1 Rancher 289
6.2.2 Rancher運(yùn)行機(jī)理 291
6.2.3 Rancher如何解決持續(xù)
部署的問題 293
6.3 持續(xù)部署場(chǎng)景 295
6.3.1 單系統(tǒng)部署結(jié)構(gòu) 295
6.3.2 普通集群部署結(jié)構(gòu) 296
6.3.3 微服務(wù)系統(tǒng)部署結(jié)構(gòu) 296
6.3.4 租戶隔離結(jié)構(gòu) 297
6.4 本章小結(jié) 297
第7章 安裝環(huán)境 298
7.1 準(zhǔn)備工作 298
7.2 安裝Docker 301
7.3 安裝Rancher 302
7.3.1 安裝Rancher HA
環(huán)境 302
7.3.2 添加本地賬戶 306
7.3.3 設(shè)置環(huán)境 308
7.3.4 添加主機(jī) 309
7.4 集成Harbor鏡像倉(cāng)庫(kù) 311
7.4.1 下拉鏡像 311
7.4.2 配置 312
7.4.3 啟動(dòng)容器 313
7.4.4 修改默認(rèn)的HTTP
端口 315
7.4.5 集成Harbor到
Rancher中 315
7.4.6 測(cè)試連通 316
7.4.7 查看Harbor日志 319
7.4.8 從Rancher商店集成
Harbor 319
7.5 Rancher名詞約定 321
7.6 本章小結(jié) 324
第8章 持續(xù)部署 325
8.1 單系統(tǒng)部署 325
8.1.1 源碼掃描、編譯、
打包 326
8.1.2 制作鏡像并上傳到
Harbor中 327
8.1.3 通過(guò)rancher-compose啟動(dòng)
容器 329
8.1.4 在Jenkins中訪問
Rancher 332
8.2 集群部署 333
8.2.1 部署多個(gè)實(shí)例 334
8.2.2 建立Load Balancer 335
8.2.3 持續(xù)部署 339
8.2.4 用nginx作為
Load Balancer 340
8.3 微服務(wù)部署 343
8.3.1 微服務(wù)部署需求 343
8.3.2 在Docker中實(shí)現(xiàn)日志
統(tǒng)一收集 345
8.3.3 filebeat與ELK的
集成 348
8.3.4 將Docker日志傳遞到
ELK 352
8.3.5 通過(guò)Docker日志收集
log-pilot 353
8.4 租戶隔離 356
8.5 同一鏡像的多環(huán)境發(fā)布 357
8.6 本章小結(jié) 360
第9章 網(wǎng)絡(luò)方案 361
9.1 Docker網(wǎng)絡(luò) 361
9.1.1 Host網(wǎng)絡(luò) 361
9.1.2 Bridge網(wǎng)絡(luò) 362
9.1.3 Container網(wǎng)絡(luò) 363
9.1.4 none網(wǎng)絡(luò) 363
9.2 Rancher網(wǎng)絡(luò)方案 364
9.3 IPSec網(wǎng)絡(luò) 366
9.3.1 IPSec的定義 366
9.3.2 Rancher的IPSec網(wǎng)絡(luò) 367
9.4 VXLAN 368
9.4.1 什么是VXLAN 368
9.4.2 Rancher的VXLAN
驅(qū)動(dòng) 369
9.5 本章小結(jié) 371
第 10章 服務(wù)管理 372
10.1 服務(wù)編排 372
10.1.1 Add Service 372
10.1.2 Command 373
10.1.3 Volumes 374
10.1.4 Networking 375
10.1.5 Security/Host 376
10.2 健康檢查 379
10.3 藍(lán)綠發(fā)布 380
10.4 灰度發(fā)布 381
10.5 本章小結(jié) 381
第 11章 鏡像倉(cāng)庫(kù)規(guī)劃 382
11.1 鏡像倉(cāng)庫(kù)的需求 382
11.2 鏡像倉(cāng)庫(kù)規(guī)劃 382
11.3 復(fù)制Harbor鏡像 383
11.3.1 分別準(zhǔn)備好測(cè)試與生產(chǎn)
環(huán)境的鏡像倉(cāng)庫(kù) 384
11.3.2 設(shè)置復(fù)制策略 384
11.4 本章小結(jié) 386
第 12章 存儲(chǔ)方案 387
12.1 存儲(chǔ)需求 387
12.1.1 文件存儲(chǔ)需求 387
12.1.2 對(duì)象存儲(chǔ)需求 387
12.1.3 塊存儲(chǔ)需求 388
12.1.4 分布式存儲(chǔ)需求 388
12.2 常用方案 389
12.3 Rancher NFS示例 390
12.4 本章小結(jié) 394
第 13章 服務(wù)編排工具 395
13.1 Rancher 2.0 395
13.2 Rancher 2.0體驗(yàn) 397
13.3 本章小結(jié) 398