持續(xù)集成與持續(xù)交付實戰(zhàn):用Jenkins、Travis CI和CircleCI構建和發(fā)布大規(guī)模高質(zhì)量軟件
定 價:89.9 元
- 作者:[美]讓-馬塞爾·貝爾蒙特(Jean-Marcel Belmont)
- 出版時間:2022/5/1
- ISBN:9787115584724
- 出 版 社:人民郵電出版社
- 中圖法分類:TP311.52
- 頁碼:300
- 紙張:
- 版次:01
- 開本:16開
本書是一本持續(xù)集成與持續(xù)交付(CI/CD)實踐指南,全書共15章。書中首先介紹持續(xù)集成和持續(xù)交付的基礎知識,并介紹Jenkins用戶界面及其安裝方式;接下來介紹使用Jenkins UI開發(fā)插件、構建Jenkins流水線和運行Docker集成的實際操作;最后介紹Travis CI和CircleCI的安裝及腳本運行等,幫助讀者通過Travis CI和CircleCI獲得有關CI/CD的廣泛知識。
本書適合系統(tǒng)管理員、DevOps工程師以及構建和發(fā)布工程師閱讀。通過閱讀本書,讀者能了解CI/CD的概念,并獲得使用CI/CD生態(tài)系統(tǒng)中重要工具的實踐經(jīng)驗。
本書從持續(xù)集成(CI)和持續(xù)交付(CD)的基礎知識以及它們在 DevOps 生態(tài)系統(tǒng)中的位置入手,證明利益相關者協(xié)作作為 CI/CD 一部分的重要性。
隨著章節(jié)的深入,讀者將接觸 Jenkins UI,學習在不同平臺上安裝 Jenkins、添加插件和編寫自由風格腳本,獲得使用Jenkins UI 開發(fā)插件、構建 Jenkins 2.0 流水線和進行 Docker 集成的實踐經(jīng)驗,學會安裝 Travis CI 和 CircleCI,進行腳本編寫、日志記錄與調(diào)試,通過 Travis CI 和 CircleCI 獲得有關 CI/CD 的廣泛知識。
本書將詳細介紹 CI/CD 生態(tài)系統(tǒng)的實踐并指導讀者實施。
本書涵蓋的主要內(nèi)容:
■ 在不同的操作系統(tǒng)上安裝 Jenkins;
■ 學習 Jenkins 自由風格腳本、流水線語法和方法論;
■ 探索 Travis CI 構建生命周期事件和多種構建編程語言;
■ 掌握 Travis CI CLI,并使用 CLI 將任務自動化;
■ 使用 CircleCI CLI 作業(yè),學習流水線;
■ 使用 CircleCI CLI 將任務自動化,學習調(diào)試和故障排除;
■ 學習開源工具,如 Git 和 GitHub;
■ 安裝 Docker,學習 shell 腳本編寫中的相關概念。
讓-馬塞爾·貝爾蒙特(Jean-Marcel Belmont)是一位對自動化和持續(xù)集成充滿熱情的軟件工程師。他積極參與開源社區(qū),經(jīng)常參加各類不同主題的軟件開發(fā)研討會。他主持著多個開發(fā)小組,提倡整潔代碼模式和軟件匠藝。
第 1 章 具有自動測試功能的 CI/CD 1
1.1 業(yè)務場景 1
1.1.1 手動流程——討論一種假設場景 2
1.1.2 雇員的困境 4
1.1.3 引入自動化 6
1.1.4 開發(fā)人員生產(chǎn)力 10
1.1.5 打破溝通障礙 12
1.1.6 創(chuàng)造合作環(huán)境 15
1.2 小結 16
1.3 問題 16
第 2 章 持續(xù)集成基礎 17
2.1 技術要求 17
2.2 什么是持續(xù)集成 18
2.2.1 什么是軟件構建 18
2.2.2 持續(xù)集成流程步驟概述 18
2.2.3 持續(xù)集成的價值 18
2.2.4 利用持續(xù)集成降低風險 19
2.2.5 源碼簽入時的軟件構建 21
2.2.6 小型構建和大型構建故障 30
2.2.7 CI 構建實踐 30
2.3 小結 32
2.4 問題 32
第 3 章 持續(xù)交付基礎 33
3.1 技術要求 33
3.2 軟件交付問題 33
3.2.1 軟件交付的含義 34
3.2.2 常見的版本發(fā)布反模式 34
3.2.3 如何進行軟件發(fā)布 35
3.2.4 軟件交付自動化的好處 36
3.3 配置管理 36
3.3.1 配置管理的含義 37
3.3.2 版本控制 37
3.3.3 依賴管理 38
3.3.4 軟件配置管理 40
3.3.5 環(huán)境管理 41
3.4 部署流水線 43
3.4.1 什么是部署流水線 43
3.4.2 部署流水線實踐 43
3.4.3 測試門 44
3.4.4 發(fā)布準備 45
3.5 部署腳本編寫 46
3.5.1 構建工具概述 46
3.5.2 部署腳本編寫概念 46
3.5.3 部署腳本編寫最佳實踐 47
3.6 部署生態(tài)系統(tǒng) 48
3.6.1 基礎設施工具 48
3.6.2 云提供商和工具 48
3.7 小結 49
3.8 問題 49
第 4 章 CI/CD 的業(yè)務價值 50
4.1 技術要求 50
4.2 溝通問題 50
4.2.1 需求傳達不當 51
4.2.2 缺乏適當?shù)奈臋n 51
4.2.3 時區(qū)差異 52
4.2.4 缺乏信任和相互尊重 52
4.2.5 文化差異和語言障礙 52
4.2.6 反饋周期長 53
4.3 與團隊成員溝通痛點 53
4.3.1 等待需求信息 53
4.3.2 部署流水線中未記錄的步驟 54
4.3.3 王國鑰匙的持有者過多 54
4.3.4 溝通渠道過多 54
4.3.5 疼痛驅(qū)動開發(fā) 55
4.4 不同團隊間分擔責任 55
4.4.1 輪換團隊成員 55
4.4.2 尋求有關開發(fā)實踐的反饋 56
4.4.3 建立跨職能團隊 57
4.5 了解利益相關者 57
4.5.1 項目經(jīng)理 57
4.5.2 行政領導團隊 58
4.5.3 終端用戶 58
4.6 證明 CI/CD 的重要性 59
4.6.1 指標和報告 59
4.6.2 幫助領導者了解自動化的重要性 59
4.7 獲得利益相關者對 CI/CD 的批準 60
4.7.1 開始一個臭鼬工廠項目 60
4.7.2 在本地計算機上啟動 CI/CD 60
4.7.3 公司內(nèi)部展示 60
4.7.4 午餐交流會 61
4.8 小結 61
4.9 問題 61
第 5 章 Jenkins 的安裝與基礎 62
5.1 技術要求 62
5.2 在 Windows 上安裝 62
5.2.1 安裝 Jenkins 的先決條件 62
5.2.2 Windows 安裝程序 63
5.2.3 在 Windows 上安裝 Jenkins 64
5.2.4 在 Windows 上運行安裝程序 65
5.2.5 在 Windows 上用命令提示符啟動和停止 Jenkins 66
5.3 在 Linux 上安裝 67
5.3.1 在 Ubuntu 上安裝 Jenkins 67
5.3.2 在 Ubuntu 上啟動 Jenkins 服務 67
5.3.3 打開網(wǎng)絡流量防火墻 68
5.3.4 首次登錄時解鎖 Jenkins 68
5.4 在 macOS 上安裝 70
5.4.1 下載 Jenkins 程序包 71
5.4.2 首次登錄時解鎖 Jenkins 73
5.4.3 通過 Homebrew 安裝 Jenkins 75
5.5 在本地運行 Jenkins 76
5.5.1 創(chuàng)建一個新項目 76
5.5.2 控制臺輸出 79
5.6 管理 Jenkins 80
5.6.1 配置環(huán)境變量及工具 82
5.6.2 配置作業(yè)以輪詢 GitHub 版本控制存儲庫 83
5.7 小結 85
5.8 問題 85
第 6 章 編寫自由風格腳本 86
6.1 技術要求 86
6.2 創(chuàng)建簡單的自由風格腳本 86
6.2.1 Jenkins 儀表盤指南 86
6.2.2 添加新的構建作業(yè)項 87
6.2.3 構建配置選項 88
6.3 配置自由風格作業(yè) 89
6.3.1 General 標簽頁 89
6.3.2 Source Code Management 標簽頁 90
6.3.3 Build Triggers 標簽頁 92
6.3.4 Build Environment 標簽頁 93
6.3.5 Build 標簽頁 93
6.3.6 Post-build Actions 標簽頁 94
6.4 添加環(huán)境變量 95
6.4.1 全局環(huán)境變量的配置 95
6.4.2 EnvInject 插件 97
6.5 用自由風格作業(yè)調(diào)試問題 98
6.5.1 歷史構建總覽 98
6.5.2 用自由風格腳本調(diào)試問題 100
6.6 小結 101
6.7 問題 101
第 7 章 開發(fā)插件 102
7.1 技術要求 102
7.2 Jenkins 插件的說明 102
7.2.1 插件為什么有用 102
7.2.2 Jenkins 插件文檔 103
7.2.3 在 Jenkins 中安裝插件 103
7.3 構建簡單的 Jenkins 插件 103
7.3.1 安裝 Java 103
7.3.2 Maven 安裝指南 104
7.4 Jenkins 插件的開發(fā) 107
7.4.1 Maven 設置文件 108
7.4.2 HelloWorld Jenkins 插件 109
7.4.3 目錄結構說明 110
7.4.4 Jenkins 插件源碼說明 111
7.4.5 構建 Jenkins 插件 113
7.4.6 安裝 Jenkins 插件 114
7.5 Jenkins 插件生態(tài)系統(tǒng) 115
7.6 小結 116
7.7 問題 116
第 8 章 使用 Jenkins 構建流水線 118
8.1 技術要求 118
8.2 Jenkins 2.0 118
8.2.1 為什么要使用 Jenkins 2.0 119
8.2.2 在現(xiàn)有軟件上安裝 Blue Ocean 插件 119
8.2.3 通過 Jenkins Docker 鏡像來安裝 Blue Ocean 插件 119
8.2.4 查看 Blue Ocean 界面 122
8.3 Jenkins 流水線 123
8.3.1 創(chuàng)建 Jenkins 流水線 123
8.3.2 用流水線編輯器創(chuàng)建流水線 127
8.4 Jenkins Blue Ocean 操作說明 130
8.4.1 流水線視圖 130
8.4.2 流水線細節(jié)視圖 130
8.4.3 流水線構建視圖 131
8.4.4 流水線階段視圖 132
8.4.5 Jenkins 流水線中的其他視圖 132
8.5 流水線語法 133
8.5.1 流水線編輯器 133
8.5.2 流水線語法文檔 134
8.6 小結 134
8.7 問題 134
第 9 章 Travis CI 的安裝與基礎 135
9.1 技術要求 135
9.2 Travis CI 的介紹 135
9.3 使用 Travis CI 的先決條件 136
9.3.1 創(chuàng)建 GitHub 賬號 136
9.3.2 創(chuàng)建 Travis CI 賬號 138
9.3.3 為新 GitHub 賬號添加 SSH 密鑰 140
9.4 添加簡單的 Travis YAML 配置腳本 142
9.4.1 Travis YML 腳本內(nèi)容 142
9.4.2 為 Travis CI 賬號添加 GitHub 存儲庫 142
9.5 Travis CI 腳本各部分解析 145
9.5.1 選擇編程語言 145
9.5.2 選擇基礎設施 146
9.5.3 定制構建 147
9.6 小結 152
9.7 問題 153
第 10 章 Travis CI 命令行命令及自動化 154
10.1 技術要求 154
10.2 Travis CLI 的安裝 154
10.2.1 在 Windows 上安裝 155
10.2.2 在 Linux 上安裝 156
10.2.3 在 macOS 上安裝 157
10.3 Travis CLI 命令 158
10.3.1 非 API 命令 158
10.3.2 API 命令 160
10.3.3 存儲庫命令 170
10.3.4 Travis Pro 和 Travis Enterprise 版本的 Travis CI 選項 179
10.4 小結 180
10.5 問題 180
第 11 章 Travis CI UI 日志記錄與調(diào)試 181
11.1 技術要求 181
11.2 Travis Web 客戶端概述 181
11.2.1 主控儀表盤概述 182
11.2.2 作業(yè)日志概述 183
11.3 用 Docker 在本地調(diào)試構建 185
11.4 在調(diào)試模式下運行構建 187
11.4.1 從配置頁面獲取 API 令牌 187
11.4.2 從構建日志獲取作業(yè) ID 188
11.4.3 從視圖配置按鈕的鏈接中獲取作業(yè) ID 188
11.4.4 通過直達/build 端點的 API 請求獲取作業(yè) ID 188
11.4.5 在調(diào)試模式下調(diào)用 API 來開始構建作業(yè) 189
11.4.6 在調(diào)試模式下啟用 SSH 會話 190
11.4.7 Travis 調(diào)試模式中的便捷 Bash 函數(shù) 190
11.4.8 tmate shell 會話操作 192
11.5 Travis Web UI 日志 193
11.6 Travis CI 部署概述與調(diào)試 194
11.6.1 支持 Travis CI 的服務提供商 194
11.6.2 在 Travis CI 中設置 Heroku 195
11.6.3 調(diào)試 Travis YML 腳本中的錯誤 196
11.7 小結 198
11.8 問題 198
第 12 章 CircleCI 的安裝與基礎 199
12.1 技術要求 199
12.2 CircleCI 簡介 200
12.3 比較 CircleCI 和 Jenkins 200
12.4 使用 CircleCI 的先決條件 200
12.4.1 創(chuàng)建 GitHub 賬號 200
12.4.2 創(chuàng)建 Bitbucket 賬號 200
12.4.3 創(chuàng)建 CircleCI 賬號 203
12.5 在 GitHub 中設置 CircleCI 206
12.6 在 Bitbucket 中設置 CircleCI 212
12.7 CircleCI 配置概述 218
12.7.1 CircleCI 配置概念概述 218
12.7.2 向新存儲庫中添加源文件 219
12.7.3 新存儲庫的 CircleCI 構建作業(yè) 220
12.8 小結 221
12.9 問題 221
第 13 章 CircleCI 命令行命令與自動化 222
13.1 技術要求 222
13.2 CircleCI CLI 的安裝 222
13.2.1 在 macOS / Linux 上安裝 CircleCI CLI 223
13.2.2 通過 GitHub 安裝 CircleCI CLI 的每夜構建版本 223
13.3 CircleCI CLI 命令 224
13.3.1 version 命令 225
13.3.2 help 命令 226
13.3.3 config 命令 226
13.3.4 build 命令 228
13.3.5 step 命令 230
13.3.6 configure 命令 230
13.3.7 tests 命令 232
13.4 在 CircleCI 中使用工作流 232
13.4.1 CircleCI Web UI 中的實際工作流 233
13.4.2 順序工作流示例 234
13.5 使用 CircleCI API 236
13.5.1 測試 CircleCI API 連接 236
13.5.2 用 CircleCI API 獲取單個 Git 存儲庫的構建摘要 237
13.5.3 用 jq 實用程序計算 CircleCI 構建的某些指標 237
13.6 小結 238
13.7 問題 238
第 14 章 CircleCI UI 日志記錄與調(diào)試 239
14.1 技術要求 239
14.2 作業(yè)日志概述 239
14.2.1 用默認構建作業(yè)運行作業(yè)中的步驟 239
14.2.2 用工作流運行作業(yè)中的步驟 246
14.2.3 用 CircleCI API 查找最新的構建 URL 249
14.3 在 CircleCI 中調(diào)試慢速構建 252
14.4 日志記錄和故障排除技術 256
14.5 小結 260
14.6 問題 261
第 15 章 最佳實踐 262
15.1 技術要求 262
15.2 CI/CD 中不同類型測試的最佳實踐 262
15.2.1 冒煙測試 263
15.2.2 單元測試 264
15.2.3 集成測試 266
15.2.4 系統(tǒng)測試 269
15.2.5 驗收測試 269
15.2.6 在 CI/CD 流水線中運行不同類型測試的最佳實踐 271
15.3 密碼和機密存儲中的最佳實踐 271
15.3.1 Vault 的安裝 272
15.3.2 機密管理的最佳實踐概述 275
15.4 部署中的最佳實踐 275
15.4.1 創(chuàng)建部署檢查清單 276
15.4.2 自動化發(fā)布 276
15.4.3 部署腳本示例 276
15.4.4 部署腳本的最佳實踐 279
15.5 小結 280
15.6 問題 280