[美] Brent Laster(布倫特·萊斯特) 著,郝樹偉,石雪峰,雷濤,李華強(qiáng) 譯
適讀人群 :適合想要學(xué)習(xí)Jenkins并且想利用其新技術(shù)來改造老舊流水線或者構(gòu)建現(xiàn)代的自動化持續(xù)交付環(huán)境的讀者
1 Jenkins創(chuàng)始人Kohsuke kawaguchi,DevOps時(shí)代社區(qū)聯(lián)合創(chuàng)始人蕭田國、景韻傾情作序,原書作者Brent Laster專門為中文版作序,業(yè)內(nèi)專家Jeff Liu、徐奇琛、楊振濤等聯(lián)袂力薦。
2 這是一本實(shí)用的Jenkins書籍,通過閱讀本書可以學(xué)到如何利用Jenkins 2的新特性來定義流水線即代碼、集成其他關(guān)鍵技術(shù),以及創(chuàng)建自動化的、可靠的流水線,以便簡化和加速DevOps環(huán)境的建設(shè)。
本書包含的內(nèi)容。
設(shè)計(jì)、實(shí)現(xiàn)并且執(zhí)行具有一定靈活性、可控性以及易于維護(hù)性的持續(xù)交付流水線,對于以前版本的Jenkins來說是不可能實(shí)現(xiàn)的。通過這本實(shí)用的書籍,構(gòu)建管理人員、開發(fā)人員、測試人員以及其他專業(yè)人員將會學(xué)到如何利用Jenkins 2的新特性來定義流水線即代碼、集成其他關(guān)鍵技術(shù),以及創(chuàng)建自動化的、可靠的流水線,以便簡化和加速DevOps環(huán)境的建設(shè)。作者Brent Laster向你展示了Jenkins 2與這個(gè)流行的開源自動化平臺基于Web的傳統(tǒng)版本有著很大的不同。
Brent Laster是一位全球培訓(xùn)師、作家及開源技術(shù)的演講者,也是一家科技公司的高級 研發(fā)經(jīng)理。他投身軟件行業(yè)已經(jīng)超過25年,負(fù)責(zé)過各種技術(shù)和管理崗位。除了本書,他還撰寫了 Professional Git(Wiley),一本適用于Git初學(xué)者和有經(jīng)驗(yàn)人士的易于使用的綜合性指南手冊,以及 Continuous Integration vs. Continuous Delivery vs. Continuous Deployment(O’Reilly),一本幫助初學(xué)者理解這幾個(gè)概念區(qū)別的指南。你能夠經(jīng)??吹紹rent主持一些行業(yè)會議的工作坊以及舉辦Safari上的一些在線培訓(xùn)課程。 Brent總是盡力花時(shí)間學(xué)習(xí)和開發(fā)一些技術(shù)與領(lǐng)導(dǎo)力技能,然后分享給別人。他相信無論主題或者技術(shù)是什么,沒有什么能替代在提供給別人知識達(dá)成目標(biāo)的過程中所產(chǎn)生的靈感和潛能。你可以通過 LinkedIn 或 Twitter 的 @BrentCLaster 聯(lián)系 Brent。
郝樹偉,
《Jenkins**指南》首位譯者,阿里云高級研發(fā)工程師,主要負(fù)責(zé)開源集成和DevOps相關(guān)產(chǎn)品的研發(fā),在CI/CD領(lǐng)域有豐富經(jīng)驗(yàn),在Jenkins開源社區(qū)與相關(guān)書籍翻譯、漢化方面有較多貢獻(xiàn)和經(jīng)驗(yàn)。
石雪峰,
Jenkins全球推廣大使、Certified Jenkins Engineer、Jenkins中文社區(qū)核心成員、Jenkins的狂熱愛好者。目前就職于京東商城前臺工程效率團(tuán)隊(duì),負(fù)責(zé)公司級持續(xù)交付和DevOps平臺體系建設(shè)。
雷濤,
Jenkins全球推廣大使、Certified Jenkins Engineer、DevOps標(biāo)準(zhǔn)核心編寫專家。目前就職于百度工程效率部,曾先后就職于新浪網(wǎng)、摩托羅拉、諾基亞、愛立信、樂視致新等國內(nèi)外知名企業(yè),專注于互聯(lián)網(wǎng)、電信、金融、無人駕駛汽車等行業(yè)的軟件工程效率提升,DevOps解決方案,持續(xù)交付,ASPICE/ISO 26262研發(fā)過程落地等領(lǐng)域。
李華強(qiáng),
樂融致新高級配置經(jīng)理,軟件配置管理(SCM)領(lǐng)域的一名老兵,先后就職于北電網(wǎng)絡(luò)、愛立信、飛維美地、樂視、樂融等多家企業(yè),從事與SCM、DevOps相關(guān)的工作。Jenkins的忠實(shí)粉絲、**實(shí)踐的推廣者,Jenkins官方Certified Jenkins Engineer(CJE)和Certified CloudBees Jenkins Platform Engineer(CCJE)認(rèn)證者。
In the last decade working in the valley, I have the opportunities to see Jenkins grow its popularity without a sign of slowing down. From internet service providers to financial institutions, from young startups to long-time traditional corporations, Jenkins has been the brand name for operational agility that speaks on its own. However, it’ s also often to see companies adopted Jenkins fail to deliver CI/CD. The Jenkins 2: Up & Running book has done a great job in delivering the value of Jenkins by focusing on how to build pipeline from user’s perspective and illustrating how to get more out of the platform. It provides the guidance how to effectively use Jenkins to achieve a truly autonomous ecosystem. ——Jeff Liu CEO, DAOps Foundation,Google DevOps Expert Jenkins是近年來一直炙手可熱的開源項(xiàng)目,也是各大公司搭建部署體系、規(guī)劃持續(xù)交付的必經(jīng)之路。軟件行業(yè)高速發(fā)展、互聯(lián)網(wǎng)產(chǎn)品不斷迭代,Jenkins自身也隨之變化、擴(kuò)展、精進(jìn)。《Jenkin 2**指南》一書會指引大家快速習(xí)得全新的技能,幫助企業(yè)持續(xù)演進(jìn)和突破CI/CD的能力。 ——徐奇琛 京東前臺技術(shù)服務(wù)提升部負(fù)責(zé)人 作為持續(xù)集成領(lǐng)域著名的開源項(xiàng)目,Jenkins近年來隨著Cloud Native等技術(shù)的發(fā)展變得愈加活躍,并快速進(jìn)化到了Jenkins 2時(shí)代。Jenkins 2不只是簡單的版本升級,而是通過流水線等特性帶來了一整套CI/CD解決方案,成長為真正的軟件交付流水線工作臺,也成為每一位專業(yè)的軟件工程師都需要掌握的入門技能! 本書的翻譯非常及時(shí),為國內(nèi)的廣大開發(fā)人員提供了**的學(xué)習(xí)和參考資料。本書在全面介紹Jenkins 2的同時(shí),既能讓新手快速入門,也能讓經(jīng)驗(yàn)豐富的工程師及時(shí)更新自己的知識和技能,可以說為國內(nèi)的互聯(lián)網(wǎng)及軟件產(chǎn)業(yè)帶來了軟件交付質(zhì)量和效率的雙提升,包括我本人在組織Jenkins中文社區(qū)的技術(shù)交流工作中也成為其早期受益者。閱讀本書不但可以了解和學(xué)習(xí)如何將已有的任務(wù)遷移到新版本上,而且可以學(xué)習(xí)*新的Jenkins DSL來讓流水線也可編程,使其更加靈活、智能和高效,這本書非常值得一讀。 ——楊振濤 vivo互聯(lián)網(wǎng)架構(gòu)師 這是我力薦的介紹Jenkins新特性的書籍。寫一本幾乎所有受眾都適用的書真是一個(gè)壯舉,而Brent已經(jīng)圓滿地完成了這一任務(wù)。 ——Chaim "Tinjaw" Krause Brent Laster在展示Jenkins威力方面做得太棒了,在解析Jenkins基本組件的同時(shí)又提供了全面的指導(dǎo)來獲取Jenkins 2以外的更多知識。那些有價(jià)值的流水線即代碼的示例會為實(shí)現(xiàn)持續(xù)交付添磚加瓦。這些應(yīng)同屬于Jenkins新老用戶的工具箱。 ——Brian Dawson DevOps傳教士,CloudBees公司
第1章 Jenkins 2簡介 1
Jenkins 2是什么 2
Jenkinsfile 3
聲明式流水線 5
Blue Ocean界面 6
Jenkins 2的全新任務(wù)類型 7
做出轉(zhuǎn)變的原因 10
DevOps理念的轉(zhuǎn)變 10
裝配流水線 11
可恢復(fù)性 11
可配置性 11
共享工作空間 11
專業(yè)知識 12
訪問邏輯 12
流水線源管理 12
競爭 12
迎接挑戰(zhàn) 13
兼容性 13
流水線兼容性 13
插件兼容性 15
檢查兼容性 20
總結(jié) 21
第2章 基礎(chǔ)知識 23
語法:腳本式流水線和聲明式流水線 24
如何選擇腳本式語法和聲明式語法 25
系統(tǒng)(system):主節(jié)點(diǎn)(master)、節(jié)點(diǎn)(node)、代理節(jié)點(diǎn)(agent)和執(zhí)行器(executor) 26
主節(jié)點(diǎn) 27
節(jié)點(diǎn) 27
代理節(jié)點(diǎn) 27
執(zhí)行器 28
創(chuàng)建節(jié)點(diǎn) 29
結(jié)構(gòu):使用Jenkins DSL 31
節(jié)點(diǎn) 32
階段 34
步驟 34
支持環(huán)境:開發(fā)一個(gè)流水線腳本 36
創(chuàng)建一個(gè)流水線項(xiàng)目 36
編輯器 38
使用代碼片段生成器 39
運(yùn)行一條流水線 43
回放 49
總結(jié) 52
第3章 流水線執(zhí)行流程 53
觸發(fā)任務(wù) 53
在其他項(xiàng)目構(gòu)建后構(gòu)建 54
周期性構(gòu)建 54
使用GitHub鉤子觸發(fā)器進(jìn)行GitSCM輪詢 57
SCM輪詢 57
靜默期 58
遠(yuǎn)程觸發(fā)構(gòu)建 58
用戶輸入 58
輸入 59
參數(shù) 62
多個(gè)輸入?yún)?shù)的返回值 68
參數(shù)與聲明式流水線 69
流程控制選項(xiàng) 74
超時(shí)(timeout) 74
重試(retry) 76
睡眠(sleep) 76
等待直到(waitUntil) 76
處理并發(fā) 78
使用lock步驟對資源加鎖 78
使用milestone來控制并發(fā)構(gòu)建 80
在多分支流水線中限制并發(fā) 82
并行地運(yùn)行任務(wù) 82
有條件的執(zhí)行功能 92
構(gòu)建后處理 .94
腳本式流水線構(gòu)建后處理 94
聲明式流水線與構(gòu)建后處理 96
總結(jié) 97
第4章 通知與報(bào)告 99
通知 99
電子郵件 100
協(xié)作服務(wù) 110
報(bào)告 120
發(fā)布HTML報(bào)告 120
總結(jié) 123
第5章 訪問與安全 125
安全加固Jenkins 125
啟用安全性 126
其他全局安全配置 129
Jenkins中的憑證 133
憑證范圍 134
憑證域 135
憑證提供者 135
憑證存儲 136
管理憑證 136
選擇憑證提供者 136
選擇憑證類型 137
通過提供者指定憑證類型 138
創(chuàng)建和管理憑證 139
上下文鏈接 141
添加一個(gè)新域或者憑證 141
使用新域和憑證 144
高級憑證:基于角色的訪問權(quán)限 145
基本用途 146
管理角色 147
分配角色 152
角色策略宏 155
在流水線中使用憑證 157
用戶名和密碼 157
SSH密鑰 158
令牌憑證 159
控制腳本安全性 160
腳本檢查 160
腳本批準(zhǔn) 161
Groovy沙箱 162
Jenkins憑證與Vault配合使用 164
方法 164
安裝 165
創(chuàng)建一個(gè)策略 165
身份驗(yàn)證 166
在Jenkins中使用Vault 168
總結(jié) 171
第6章 擴(kuò)展你的流水線 173
可信庫和不可信庫 173
內(nèi)部庫與外部庫 174
內(nèi)部庫 174
外部庫 176
從代碼倉庫獲取庫 178
Modern SCM 178
Legacy SCM 178
在流水線腳本中使用庫 179
從源碼版本控制中自動下載庫 180
加載庫到腳本中 180
Jenkins項(xiàng)目中的庫范圍 182
庫結(jié)構(gòu) 183
樣本庫例程 183
共享庫代碼的結(jié)構(gòu) 184
使用第三方庫 195
直接加載代碼 196
從外部SCM加載代碼 196
回放外部代碼和庫 198
深入研究可信與不可信代碼 200
總結(jié) 203
第7章 聲明式流水線 205
動機(jī) 206
不直觀 206
掌握Groovy 206
其他必需的裝配 206
結(jié)構(gòu) 207
代碼塊 208
部分 208
指令 209
步驟 209
條件 210
構(gòu)建代碼塊 210
pipeline 211
agent 212
environment 215
tools 216
options 219
triggers 222
parameters 224
libraries 227
stages 228
post 231
處理非聲明式的代碼 232
檢查你的插件 233
創(chuàng)建一個(gè)共享庫 233
在pipeline代碼塊之外放置代碼 233
script語句 234
在一個(gè)階段中使用parallel 234
腳本檢查與錯(cuò)誤報(bào)告 235
聲明式流水線與Blue Ocean接口 238
總結(jié) 238
第8章 理解項(xiàng)目類型 241
通用項(xiàng)目選項(xiàng) 241
基礎(chǔ)設(shè)置 241
源碼管理 247
構(gòu)建觸發(fā)器 249
構(gòu)建環(huán)境 256
構(gòu)建 266
構(gòu)建后操作 266
項(xiàng)目類型 266
自由風(fēng)格類型項(xiàng)目 267
Maven項(xiàng)目類型 267
流水線項(xiàng)目類型 270
外部任務(wù)項(xiàng)目類型 272
多配置項(xiàng)目類型 275
Ivy項(xiàng)目 280
文件夾 282
多分支流水線項(xiàng)目 287
GitHub組織項(xiàng)目 292
Bitbucket團(tuán)隊(duì)/項(xiàng)目 296
總結(jié) 299
第9章 Blue Ocean用戶界面 301
第一部分:管理已有的流水線 302
主界面 302
項(xiàng)目詳情頁面 305
運(yùn)行頁面 316
第二部分:使用Blue Ocean編輯器 325
不依賴現(xiàn)有Jenkinsfile創(chuàng)建一個(gè)全新的流水線 326
使用編輯器 330
編輯已有的流水線 340
導(dǎo)入和編輯已有的流水線 344
使用非GitHub倉庫支持流水線 354
總結(jié) 356
第10章 轉(zhuǎn)換 357
通用的準(zhǔn)備 358
邏輯和準(zhǔn)確性 358
項(xiàng)目類型 358
系統(tǒng) 358
訪問 358
全局配置 359
插件 359
共享庫 359
將自由風(fēng)格類型的流水線轉(zhuǎn)換為腳本式流水線 360
源碼 364
編譯 369
單元測試 373
集成測試 377
遷移流水線接下來的部分 380
從Jenkins流水線項(xiàng)目轉(zhuǎn)換為Jenkinsfile 385
方法 388
最后的步驟 395
從腳本式流水線轉(zhuǎn)換為聲明式流水線 397
樣本流水線 397
轉(zhuǎn)換 399
完成轉(zhuǎn)換 402
可用于轉(zhuǎn)換的通用指南 403
總結(jié) 405
第11章 操作系統(tǒng)環(huán)境集成(shell、工作空間、環(huán)境和文件) 407
使用shell的步驟 407
sh步驟 408
bat步驟 413
powershell步驟 414
使用環(huán)境變量 415
withEnv步驟 416
使用工作空間 418
創(chuàng)建自定義工作空間 418
清理工作空間 420
文件和目錄步驟 422
使用文件 422
使用目錄 423
使用文件和目錄的更多操作 424
總結(jié) 425
第12章 集成分析工具 427
SonarQube調(diào)查 427
使用個(gè)人規(guī)則 428
質(zhì)量門和配置文件 432
掃描程序 434
將SonarQube與Jenkins一起使用 434
全局配置 434
在自由風(fēng)格類型項(xiàng)目中使用SonarQube 436
在流水線項(xiàng)目中使用SonarQube 436
利用SonarQube分析的結(jié)果 437
在Jenkins中集成SonarQube的輸出 441
代碼覆蓋率:與JaCoCo集成 442
關(guān)于JaCoCo 442
JaCoCo與流水線集成 443
在Jenkins中集成JaCoCo的輸出 445
總結(jié) 446
第13章 集成制品管理 447
發(fā)布和獲取制品 447
安裝和全局配置 448
在腳本式流水線中使用Artifactory 449
執(zhí)行其他任務(wù) 454
下載指定文件到指定目錄 454
上傳指定文件到指定路徑 454
設(shè)置構(gòu)建保留策略 455
構(gòu)建提升 455
聲明式流水線集成 455
Artifactory與Jenkins輸出集成 456
制品歸檔和指紋 457
總結(jié) 462
第14章 集成容器 465
配置成一個(gè)云 465
全局配置 466
使用Docker鏡像作為代理節(jié)點(diǎn) 469
在流水線中使用云鏡像 473
在聲明式流水線中動態(tài)創(chuàng)建的代理節(jié)點(diǎn) 477
Docker流水線全局變量 480
全局變量 480
Docker應(yīng)用全局變量方法 481
Docker鏡像全局變量方法 487
Docker容器全局變量方法 491
通過shell運(yùn)行Docker 492
總結(jié) 493
第15章 其他接口 495
使用命令行接口 496
直接使用SSH接口 496
使用CLI客戶端 499
使用Jenkins REST API 501
過濾結(jié)果 502
啟動構(gòu)建 504
使用腳本控制臺 506
總結(jié) 508
第16章 故障處理 509
深入流水線步驟 509
處理序列化錯(cuò)誤 512
連續(xù)傳遞風(fēng)格 513
序列化流水線 513
NotSerializableException 513
處理非序列化錯(cuò)誤 514
識別引發(fā)錯(cuò)誤的腳本行 517
處理流水線異常 518
在聲明式流水線中使用非聲明式代碼 518
未授權(quán)代碼(腳本和方法授權(quán)) 522
不支持的操作 523
系統(tǒng)日志 523
時(shí)間戳 525
流水線耐用性設(shè)置 526
總結(jié) 527
關(guān)于作者 529
封面介紹 529
關(guān)于譯者 530
更多建議: