注冊 | 登錄讀書好,好讀書,讀好書!
讀書網(wǎng)-DuShu.com
當(dāng)前位置: 首頁出版圖書科學(xué)技術(shù)計算機/網(wǎng)絡(luò)計算機科學(xué)理論與基礎(chǔ)知識持續(xù)交付圖解

持續(xù)交付圖解

持續(xù)交付圖解

定 價:¥128.00

作 者: [美] 克里斯蒂·威爾遜(Christie Wilson)著 姚冬,高俊寧,胡帥,劉志超 譯
出版社: 清華大學(xué)出版社
叢編項:
標 簽: 暫缺

ISBN: 9787302679219 出版時間: 2025-03-01 包裝: 平裝-膠訂
開本: 16開 頁數(shù): 字數(shù):  

內(nèi)容簡介

  請讓你的代碼庫隨時保持可發(fā)布狀態(tài)。持續(xù)交付流水線可以實現(xiàn)自動化版本控制、自動測試和自動部署,將開發(fā)人員的干預(yù)降至最低。掌握持續(xù)交付的工具和實踐,你將能夠快速且一致地添加功能和推送更新。《持續(xù)交付圖解》是建立和使用持續(xù)交付流水線的友好指南。每一章都介紹了在設(shè)置CD系統(tǒng)時將面臨的不同場景,包括自動擴展和測試遺留應(yīng)用程序等現(xiàn)實問題的示例。作者Christie Wilson采用與具體工具無關(guān)的方法,通過插圖、清晰的解釋和實踐練習(xí)來指導(dǎo)你的每一步學(xué)習(xí)。主要內(nèi)容•為新項目和遺留項目設(shè)計有效的CD流水線•確保你的流水線在適當(dāng)?shù)臅r候發(fā)出正確的信號•將版本控制作為真相的來源•安全地自動化部署

作者簡介

  Christie Wilson是一名軟件工程師。她經(jīng)常在Kubecon、OSCON、QCon、PyCon等會議上就CI/CD及相關(guān)主題發(fā)表演講。Christie的職業(yè)生涯始于移動端Web應(yīng)用開發(fā)。在從事AAA游戲的后端開發(fā)時,她編寫的功能通常在系統(tǒng)大規(guī)模發(fā)布后才會被許多人同時使用。為此,她構(gòu)建了負載和系統(tǒng)測試平臺。憑借處理復(fù)雜部署環(huán)境、核心關(guān)鍵系統(tǒng)和應(yīng)對突發(fā)流量的經(jīng)驗,她加入了Google并從事相關(guān)方向的工作。在Google,她為AppEngine、boot-strapped Knative構(gòu)建了內(nèi)部生產(chǎn)力工具,并創(chuàng)建了Tekton,這是一個基于Kubernetes(目前有65家以上的公司參與)構(gòu)建的云原生CI/CD平臺。

圖書目錄

第Ⅰ部分 持續(xù)交付入門1
第1章 歡迎閱讀本書3
1.1 你需要持續(xù)交付嗎4
1.2 為什么要持續(xù)交付5
1.3 持續(xù)交付7
1.4 集成8
1.5 持續(xù)集成9
1.6 我們能交付什么10
1.7 交付11
1.8 持續(xù)交付/持續(xù)部署12
1.9 持續(xù)交付的要素13
1.10 結(jié)論14
1.11 本章小結(jié)14
1.12 接下來……14
第2章 基礎(chǔ)流水線15
2.1 貓咪圖片網(wǎng)站16
2.2 貓咪圖片網(wǎng)站源碼17
2.3 貓咪圖片網(wǎng)站流水線18
2.4 什么是流水線,什么是任務(wù)19
2.5 CD流水線中的基礎(chǔ)任務(wù)20
2.6 門禁與轉(zhuǎn)換21
2.7 CD:門禁機制與轉(zhuǎn)換22
2.8 貓咪圖片網(wǎng)站服務(wù)流水線23
2.9 運行流水線24
2.10 每天都運行一次25
2.11 嘗試持續(xù)集成26
2.12 使用通知27
2.13 拓展手動工作28
2.14 通過webhook自動化29
2.15 拓展webhook30
2.16 在流水線出現(xiàn)問題時不要提交代碼變更31
2.17 貓咪圖片網(wǎng)站的CD32
2.18 名稱中的學(xué)問33
2.19 結(jié)論34
2.20 本章小結(jié)34
2.21 接下來……34
第Ⅱ部分 讓軟件一直保持在可交付狀態(tài)35
第3章 版本控制是發(fā)布軟件的唯一方式37
3.1 Sasha和Sarah的創(chuàng)業(yè)38
3.2 所有類型的數(shù)據(jù)39
3.3 源碼與軟件40
3.4 代碼庫和版本41
3.5 持續(xù)交付和版本控制42
3.6 Git和GitHub43
3.7 第一次代碼提交——出錯啦44
3.8 主分支出錯45
3.9 推送與拉取46
3.10 我們在進行持續(xù)交付嗎48
3.11 讓版本控制系統(tǒng)保持可發(fā)布狀態(tài)49
3.12 代碼變更提交到版本控制系統(tǒng)時的觸發(fā)器50
3.13 觸發(fā)用戶服務(wù)流水線51
3.14 構(gòu)建用戶服務(wù)52
3.15 云端的用戶服務(wù)53
3.16 連接RandomCloud數(shù)據(jù)庫54
3.17 管理用戶服務(wù)55
3.18 用戶服務(wù)宕機56
3.19 被自動化打敗57
3.20 什么是可信代碼源58
3.21 用戶服務(wù)的配置即代碼60
3.22 配置Deployaker62
3.23 配置即代碼63
3.24 發(fā)布軟件與配置變更64
3.25 結(jié)論66
3.26 本章小結(jié)66
3.27 接下來……66
第4章 有效使用靜態(tài)代碼檢查67
4.1 Becky和超級游戲控制臺68
4.2 采用靜態(tài)代碼檢查解決問題69
4.3 關(guān)于靜態(tài)代碼檢查的內(nèi)幕70
4.4 Pylint的故事和很多問題71
4.5 遺留代碼:使用系統(tǒng)化方法72
4.6 第1步:根據(jù)編碼規(guī)范進行配置73
4.7 第2步:建立基線74
4.8 第3步:在提交時強制執(zhí)行75
4.9 向流水線添加強制執(zhí)行76
4.10 第4步:分而治之77
4.11 隔離:不是所有問題都應(yīng)該修復(fù)78
4.12 強制隔離79
4.13 并非所有問題都同等重要80
4.14 靜態(tài)代碼檢查問題的類型81
4.15 缺陷優(yōu)先,風(fēng)格其后82
4.16 克服重重障礙83
4.17 結(jié)論85
4.18 本章小結(jié)85
4.19 接下來……85
第5章 處理有噪聲的測試87
5.1 持續(xù)交付和測試88
5.2 “全民冰淇淋”停機事件89
5.3 信號與噪聲90
5.4 噪聲的成功91
5.5 失敗是如何變成噪聲的92
5.6 從噪聲到信號94
5.7 讓測試通過(變綠)95
5.8 又一次停機96
5.9 通過測試仍然可能會有噪聲97
5.10 修復(fù)測試失敗98
5.11 失敗的方式:脆弱的測試99
5.12 對失敗做出反應(yīng)100
5.13 修復(fù)測試:修改代碼或測試101
5.14 重試的危險102
5.15 重試重新訪問103
5.16 為什么要重試105
5.17 變綠并保持綠色106
5.18 結(jié)論108
5.19 本章小結(jié)108
5.20 接下來……108
第6章 讓那些緩慢的測試套件變得更快109
6.1 狗狗圖片網(wǎng)站110
6.2 當(dāng)流水線過于簡單時111
6.3 新工程師試圖提交代碼112
6.4 測試和持續(xù)交付113
6.5 診斷:速度太慢114
6.6 測試金字塔115
6.7 先運行執(zhí)行快的測試用例116
6.8 兩條流水線117
6.9 獲得正確的平衡118
6.10 改變金字塔比例119
6.11 安全地調(diào)整測試用例120
6.12 測試覆蓋率121
6.13 強制要求測試覆蓋率122
6.14 流水線中的測試覆蓋率123
6.15 在具備覆蓋率的金字塔中移動測試用例124
6.16 沿著金字塔往下移動什么125
6.17 遺留的測試用例和FUD127
6.18 并行運行測試用例128
6.19 何時可以并行運行測試用例129
6.20 更新流水線130
6.21 還是太慢了131
6.22 分片測試,又稱并行 132
6.23 如何分片133
6.24 更復(fù)雜的分片134
6.25 分片流水線135
6.26 對瀏覽器測試套件進行分片136
6.27 流水線中的分片137
6.28 狗狗圖片網(wǎng)站的流水線138
6.29 結(jié)論142
6.30 本章小結(jié)142
6.31 接下來……142
第7章 在正確的時間發(fā)出正確的信號143
7.1 CoinExCompare網(wǎng)站144
7.2 代碼變更的生命周期145
7.3 僅在代碼合并前進行的CI146
7.4 代碼變更出錯的時間線147
7.5 僅在合并前運行的CI未命中缺陷148
7.6 兩張圖的故事:默認為7天149
7.7 兩張圖的故事:默認為30天150
7.8 沖突并不是總會被發(fā)現(xiàn)151
7.9 單元測試呢152
7.10 PR觸發(fā)器仍然會讓缺陷潛入153
7.11 合并前以及合并后的CI154
7.12 選項1:定期運行CI155
7.13 選項1:設(shè)置定期運行的CI156
7.14 選項2:要求特性分支是最新的157
7.15 選項2:成本是多少158
7.16 選項3:自動合并CI159
7.17 選項3:使用最新的主分支運行CI160
7.18 選項3:合并事件161
7.19 選項3:合并隊列162
7.20 選項3:CoinExCompare網(wǎng)站的合并隊列163
7.21 哪里還會發(fā)生錯誤165
7.22 測試脆弱性和PR觸發(fā)的CI166
7.23 通過定期測試捕獲脆弱的測試167
7.24 缺陷和構(gòu)建168
7.25 CI與構(gòu)建和部署169
7.26 使用相同的邏輯構(gòu)建和部署170
7.27 通過構(gòu)建改進CI流水線171
7.28 重新審視代碼變更時間表172
7.29 結(jié)論174
7.30 本章小結(jié)174
7.31 接下來……174
第Ⅲ部分 讓交付變得簡單175
第8章 輕松交付從版本控制出發(fā)177
8.1 回到Watch Me Watch項目178
8.2 DORA指標179
8.3 如果我不運行服務(wù)呢181
8.4 Watch Me Watch 與精英效能團隊183
8.5 給Watch Me Watch提升速率184
8.6 與AllCatsAllTheTime集成 185
8.7 主干開發(fā)186
8.8 特性增量式交付187
8.9 跳過測試的提交188
8.10 代碼評審和“不完整”的代碼189
8.11 保持這個勢頭191
8.12 提交不完整的代碼192
8.13 評審進行中的代碼193
8.14 與此同時,讓我們回到端到端測試194
8.15 可見的好處195
8.16 不斷縮短的變更前置時間197
8.17 繼續(xù)AllCatsAllTheTime開發(fā)198
8.18 部署窗口和代碼凍結(jié)199
8.19 速率提高200
8.20 結(jié)論201
8.21 本章小結(jié)201
8.22 接下來……201
第9章 安全可靠的構(gòu)建203
9.1 Top Dog Maps204
9.2 當(dāng)構(gòu)建流程僅僅記錄在文檔中時205
9.3 安全和可靠構(gòu)建的屬性206
9.4 始終可發(fā)布208
9.5 自動化構(gòu)建209
9.6 構(gòu)建即代碼210
9.7 使用CD服務(wù)211
9.8 臨時構(gòu)建環(huán)境212
9.9 Miguel的計劃213
9.10 從純文檔到擁有版本控制的腳本 214
9.11 自動化容器化構(gòu)建215
9.12 安全和可靠的構(gòu)建流程217
9.13 接口的變更和導(dǎo)致的缺陷219
9.14 當(dāng)構(gòu)建產(chǎn)生缺陷時220
9.15 構(gòu)建與溝通221
9.16 語義化版本控制222
9.17 版本控制的重要性223
9.18 又一次故障!225
9.19 構(gòu)建時依賴導(dǎo)致的錯誤226
9.20 鎖定依賴項版本227
9.21 僅僅鎖定版本還不足夠228
9.22 鎖定哈希值229
9.23 結(jié)論231
9.24 本章小結(jié)231
9.25 接下來……231
第10章 可信賴的部署233
10.1 部署困擾不斷234
10.2 DORA的穩(wěn)定性指標235
10.3 Plenty of Woofs的DORA指標237
10.4 減少部署頻率嗎238
10.5 增加部署頻率嗎239
10.6 每日部署與故障240
10.7 增加部署頻率的步驟241
10.8 修復(fù)流程中的問題242
10.9 滾動更新243
10.10 通過滾動更新修復(fù)缺陷244
10.11 回滾245
10.12 回滾策略 = 即時改善246
10.13 回滾策略實戰(zhàn)248
10.14 藍綠部署249
10.15 使用藍綠部署加速故障恢復(fù)時間250
10.16 金絲雀發(fā)布更快且更穩(wěn)定251
10.17 金絲雀部署的前提條件252
10.18 金絲雀發(fā)布的基線254
10.19 金絲雀發(fā)布的服務(wù)恢復(fù)時間255
10.20 增加部署頻率257
10.21 每日金絲雀發(fā)布策略下的DORA指標258
10.22 持續(xù)部署259
10.23 使用持續(xù)部署的時機260
10.24 強制性的QA階段261
10.25 QA與持續(xù)部署262
10.26 精英效能團隊264
10.27 結(jié)論265
10.28 本章小結(jié)265
10.29 接下來……265
第Ⅳ部分 設(shè)計持續(xù)交付267
第11章 啟動包:從零到CD269
11.1 啟動包:概覽270
11.2 回顧:通用的CD流水線任務(wù)271
11.3 典型的發(fā)布流水線272
11.4 典型的CI流水線273
11.5 兩條都帶觸發(fā)器的流水線274
11.6 綠地項目:邁向CD276
11.7 Gulpy277
11.8 綠地項目:從零到CD278
11.9 第一步:它能構(gòu)建嗎279
11.10 選擇CD系統(tǒng)280
11.11 建立初始的自動化281
11.12 代碼的狀態(tài):靜態(tài)代碼檢查282
11.13 代碼的狀態(tài):單元測試283
11.14 代碼的狀態(tài):覆蓋率284
11.15 超越CI:發(fā)布285
11.16 部署286
11.17 擴展測試287
11.18 集成測試和端到端測試的任務(wù)288
11.19 完成CI流水線289
11.20 Gulpy完整的流水線290
11.21 遺留項目:邁向CD291
11.22 Rebellious Hamster292
11.23 第一步:確定增量目標的優(yōu)先級293
11.24 首先關(guān)注痛點294
11.25 Rebellious Hamster的痛點295
11.26 知道何時出現(xiàn)了問題296
11.27 隔離并添加測試297
11.28 具有更多測試的遺留項目流水線298
11.29 使部署更加自動化299
11.30 創(chuàng)建發(fā)布流水線300
11.31 Rebellious Hamster的發(fā)布流水線301
11.32 Rebellious Hamster的完整流水線302
11.33 結(jié)論303
11.34 本章小結(jié)303
11.35 接下來……303
第12章 腳本也是代碼305
12.1 Purrfect Bank306
12.2 CD的問題307
12.3 Purrfect Bank的CD概覽308
12.4 支付組織的Bash腳本庫309
12.5 交易服務(wù)流水線310
12.6 從一個大腳本演化311
12.7 設(shè)計良好任務(wù)的原則312
12.8 打破巨型任務(wù)313
12.9 更新后的交易服務(wù)流水線314
12.10 調(diào)試Bash庫315
12.11 調(diào)查Bash庫的缺陷316
12.12 為什么會引入這個缺陷317
12.13 Bash的作用318
12.14 何時Bash不太好319
12.15 shell腳本與通用語言321
12.16 從shell腳本到通用編程語言322
12.17 遷移計劃323
12.18 從Bash庫到擁有Bash的任務(wù)324
12.19 任務(wù)內(nèi)的可重用Bash325
12.20 從Bash到Python326
12.21 任務(wù)即代碼327
12.22 CD腳本也是代碼328
12.23 結(jié)論329
12.24 本章小結(jié)329
12.25 接下來……329
第13章 流水線設(shè)計331
13.1 PetMatch332
13.2 匹配服務(wù)CD流水線333
13.3 CD流水線問題334
13.4 端到端測試流水線335
13.5 端到端測試流水線和錯誤336
13.6 最終行為337
13.7 圖形化最終部分338
13.8 匹配服務(wù)流水線中的最終行為339
13.9 端到端測試流水線和速度340
13.10 并行執(zhí)行任務(wù)341
13.11 端到端測試流水線和測試速度342
13.12 并行執(zhí)行和測試分片343
13.13 帶有分片的端到端測試流水線344
13.14 端到端測試流水線和信號345
13.15 單一CI流水線346
13.16 發(fā)布流水線與信號347
13.17 CI流水線的差異348
13.18 合并流水線349
13.19 發(fā)布流水線350
13.20 發(fā)布流水線中的硬編碼351
13.21 通過參數(shù)化復(fù)用流水線352
13.22 使用可重用的流水線353
13.23 更新后的流水線354
13.24 解決PetMatch的CD問題355
13.25 期待的CD功能356
13.26 結(jié)論357
13.27 本章小結(jié)357
13.28 接下來……357
附錄359
附錄A  -- CD系統(tǒng)361
附錄B -- 版本控制系統(tǒng)371

本目錄推薦

掃描二維碼
Copyright ? 讀書網(wǎng) m.ranfinancial.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號 鄂公網(wǎng)安備 42010302001612號