首页  软件  游戏  图书  电影  电视剧

请输入您要查询的图书:

 

图书 Jenkins 2.x实践指南
内容
作者简介
翟志军,程序员。
https://showme.codes博主。现就职于某传统家电制造公司,参与DevOps产品的开发。
目录
目录
1 关于软件工程生产力 1
1.1 从另一个角度看“提高软件工程生产力” . . . . . . . . . . . . . . . . . . . . . . . 1
1.1.1 从劳动力要素考虑提高软件工程生产力 . . . . . . . . . . . . . . . . . . . . 2
1.1.2 从劳动对象要素考虑提高软件工程生产力 . . . . . . . . . . . . . . . . . . . 2
1.1.3 从生产工具要素考虑提高软件工程生产力 . . . . . . . . . . . . . . . . . . . 3
1.1.4 生产力三要素的意义 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2 Jenkins 介绍 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.3 Jenkins 与 DevOps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.4 本章小结 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2 pipeline 入门 6
2.1 pipeline 是什么 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.2 Jenkinsfile 又是什么 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.3 pipeline 语法的选择 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.4 创建个 pipeline . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2.5 从版本控制库拉取 pipeline . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.6 使用 Maven 构建 Java 应用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.7 本章小结 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
3 pipeline 语法讲解 16
3.1 必要的 Groovy 知识 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
3.2 pipeline 的组成 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
3.2.1 pipeline 最简结构 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
3.2.2 步骤 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
3.3 post 部分 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
3.4 pipeline 支持的指令 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
3.5 配置 pipeline 本身 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
3.6 在声明式 pipeline 中使用脚本 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
3.7 pipeline 内置基础步骤 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
3.7.1 文件目录相关步骤 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
3.7.2 制品相关步骤 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
3.7.3 命令相关步骤 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
3.7.4 其他步骤 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
3.7.5 小贴士 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
3.8 本章小结 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
4 环境变量与构建工具 37
4.1 环境变量 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
4.1.1 Jenkins 内置变量 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
4.1.2 自定义 pipeline 环境变量 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
4.1.3 自定义全局环境变量 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
4.2 构建工具 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
4.2.1 构建工具的选择 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
4.2.2 tools 指令介绍 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
4.2.3 JDK 环境搭建 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
4.2.4 Maven . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
4.2.5 Go 语言环境搭建 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
4.2.6 Python 环境搭建 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
4.3 利用环境变量支持更多的构建工具 . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
4.4 利用 tools 作用域实现多版本编译 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
4.5 本章小结 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
5 代码质量 50
5.1 静态代码分析 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
5.1.1 代码规范检查 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
5.1.2 使用 PMD 进行代码规范检查 . . . . . . . . . . . . . . . . . . . . . . . . . . 51
5.1.3 各静态代码分析器之间的区别 . . . . . . . . . . . . . . . . . . . . . . . . . . 53
5.2 单元测试 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
5.2.1 JUnit 单元测试报告 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
5.2.2 JaCoCo 实现代码覆盖率 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
5.2.3 代码覆盖率越高,软件的质量就越高吗 . . . . . . . . . . . . . . . . . . . . 58
5.3 性能测试 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
5.3.1 准备性能测试环境 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
5.3.2 运行 JMeter 测试 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
5.4 SonarQube:持续代码质量检查 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
5.4.1 Maven 与 SonarQube 集成 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
5.4.2 Jenkins 与 SonarQube 集成 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
5.4.3 使用 SonarQube Scanner 实现代码扫描 . . . . . . . . . . . . . . . . . . . . . 67
5.4.4 SonarQube 集成 p3c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
5.4.5 将分析报告推送到 GitLab . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
5.5 Allure 测试报告:更美观的测试报告 . . . . . . . . . . . . . . . . . . . . . . . . . . 72
5.5.1 Allure 测试报告介绍 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
5.5.2 集成 Allure、Maven、Jenkins . . . . . . . . . . . . . . . . . . . . . . . . . . 73
5.6 当我们谈质量时,谈的是什么 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
5.7 本章小结 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
6 触发 pipeline 执行 77
6.1 什么是触发条件 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
6.2 时间触发 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
6.2.1 定时执行:cron . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
6.2.2 轮询代码仓库:pollSCM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
6.3 事件触发 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
6.3.1 由上游任务触发:upstream . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
6.3.2 GitLab 通知触发 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
6.3.3 在 pipeline 中实现 GitLab trigger . . . . . . . . . . . . . . . . . . . . . . . . . 84
6.4 将构建状态信息推送到 GitLab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
6.5 使用 Generic Webhook Trigger 插件实现触发 . . . . . . . . . . . . . . . . . . . . . . 87
6.5.1 从 Webhook 请求中提取参数值 . . . . . . . . . . . . . . . . . . . . . . . . . 89
6.5.2 触发具体某个 Jenkins 项目 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
6.5.3 根据请求参数值判断是否触发 Jenkins 项目执行 . . . . . . . . . . . . . . . . 91
6.5.4 控制打印内容 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
6.5.5 控制响应 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
6.6 本章小结 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
7 多分支构建 93
7.1 创建多分支 pipeline . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
7.2 根据分支部署到不同的环境 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
7.3 when 指令的用法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
7.4 GitLab trigger 对多分支 pipeline 的支持 . . . . . . . . . . . . . . . . . . . . . . . . . 99
7.5 Generic Webhook Trigger 插件在多分支 pipeline 场景下的应用 . . . . . . . . . . . . 99
7.6 本章小结 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
8 参数化 pipeline 101
8.1 什么是参数化 pipeline . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
8.2 使用 parameters 指令 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
8.2.1 parameters 指令支持的参数类型 . . . . . . . . . . . . . . . . . . . . . . . . . 102
8.2.2 多参数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
8.3 由另一个 pipeline 传参并触发 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
8.4 使用 Conditional BuildStep 插件处理复杂的判断逻辑 . . . . . . . . . . . . . . . . . 106
8.5 使用 input 步骤 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
8.5.1 input 步骤的简单用法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
8.5.2 input 步骤的复杂用法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
8.6 小贴士 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
8.6.1 获取上游 pipeline 的信息 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
8.6.2 设置手动输入步骤超时后,pipeline 自动中止 . . . . . . . . . . . . . . . . . 111
8.7 本章小结 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
9 凭证管理 112
9.1 为什么要管理凭证 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
9.2 凭证是什么 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
9.3 创建凭证 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
9.4 常用凭证 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
9.4.1 Secret text . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
9.4.2 Username with password . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
9.4.3 Secret file . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
9.4.4 SSH Username with private key . . . . . . . . . . . . . . . . . . . . . . . . . . 116
9.5 优雅地使用凭证 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
9.6 使用 HashiCorp Vault . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118
9.6.1 HashiCorp Vault 介绍 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118
9.6.2 集成 HashiCorp Vault . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118
9.7 在 Jenkins 日志中隐藏敏感信息 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120
9.8 本章小结 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
10 制品管理 123
10.1 制品是什么 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
10.2 制品管理仓库 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
10.3 过渡到制品库 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
10.4 管理 Java 栈制品 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
10.4.1 使用 Maven 发布制品到 Nexus 中 . . . . . . . . . . . . . . . . . . . . . . . . 125
10.4.2 使用 Nexus 插件发布制品 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
10.5 使用 Nexus 管理 Docker 镜像 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128
10.5.1 Nexus:创建 Docker 私有仓库 . . . . . . . . . . . . . . . . . . . . . . . . . . 129
10.5.2 创建 Docker 私有仓库凭证 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
10.5.3 构建并发布 Docker 镜像 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
10.5.4 小贴士 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
10.6 管理原始制品 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
10.6.1 创建 raw 仓库 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
10.6.2 上传制品,获取制品 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
10.7 从其他 pipeline 中拷贝制品 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134
10.8 版本号管理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
10.8.1 语义化版本 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
10.8.2 版本号的作用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136
10.8.3 方便生成版本号的 Version Number 插件 . . . . . . . . . . . . . . . . . . . . 137
10.9 小贴士 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
10.9.1 Nexus 匿名用户权限问题 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
10.9.2 制品库的容量要大 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
10.10 本章小结 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
11 可视化构建及视图 140
11.1 Green Balls 插件 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140
11.2 Build Monitor View 插件 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
11.3 使用视图 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143
11.3.1 使用项目的维度建立视图 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143
11.3.2 设置默认视图 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145
11.4 本章小结 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146
12 自动化部署 147
12.1 关于部署有什么好说的 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147
12.1.1 部署不等于发布 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147
12.1.2 什么是自动化部署 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148
12.1.3 自动化运维工具解决的问题 . . . . . . . . . . . . . . . . . . . . . . . . . . . 148
12.2 Jenkins 集成 Ansible 实现自动化部署 . . . . . . . . . . . . . . . . . . . . . . . . . . 149
12.2.1 Ansible 介绍 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149
12.2.2 Jenkins 与 Ansible 集成 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150
12.2.3 Ansible 插件详解 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153
12.3 手动部署比自动化部署更可靠吗 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156
12.4 如何开始自动化部署 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157
12.5 小贴士 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158
12.6 本章小结 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
13 通知 160
13.1 邮件通知 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160
13.1.1 使用 Jenkins 内置邮件通知功能 . . . . . . . . . . . . . . . . . . . . . . . . . 160
13.1.2 使用 Email Extension 插件发送通知 . . . . . . . . . . . . . . . . . . . . . . . 162
13.2 钉钉通知 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164
13.3 HTTP 请求通知 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166
13.4 本章小结 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168
14 分布式构建与并行构建 169
14.1 Jenkins 架构 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169
14.2 增加 agent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170
14.2.1 对 agent 打标签 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170
14.2.2 通过 JNLP 协议增加 agent . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171
14.2.3 通过 JNLP 协议增加 Windows agent . . . . . . . . . . . . . . . . . . . . . . . 175
14.2.4 通过 Swarm 插件增加 agent . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175
14.2.5 agent 部分详解 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176
14.2.6 小结 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180
14.3 将构建任务交给 Docker . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180
14.3.1 在 Jenkins agent 上安装 Docker . . . . . . . . . . . . . . . . . . . . . . . . . . 180
14.3.2 使用 Docker . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180
14.3.3 配置 Docker 私有仓库 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181
14.4 并行构建 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182
14.4.1 在不同的分支上应用并行构建 . . . . . . . . . . . . . . . . . . . . . . . . . . 183
14.4.2 并行步骤 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184
14.4.3 并行阶段与并行步骤之间的区别 . . . . . . . . . . . . . . . . . . . . . . . . 185
14.5 本章小结 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185
15 扩展 pipeline 186
15.1 为什么要扩展 pipeline . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186
15.2 在 pipeline 中定义函数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186
15.3 使用共享库扩展 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187
15.3.1 创建共享库 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187
15.3.2 使用共享库 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189
15.3.3 @Library 的更多用法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189
15.3.4 共享库结构详细介绍 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190
15.3.5 使用共享库实现 pipeline 模板 . . . . . . . . . . . . . . . . . . . . . . . . . . 192
15.4 通过 Jenkins 插件实现 pipeline 步骤 . . . . . . . . . . . . . . . . . . . . . . . . . . . 193
15.4.1 生成 Jenkins 插件代码骨架 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193
15.4.2 启动 Jenkins 测试:mvn hpi:run . . . . . . . . . . . . . . . . . . . . . . . . . 196
15.4.3 在 Jenkinsfile 中使用 greet 步骤 . . . . . . . . . . . . . . . . . . . . . . . . 196
15.4.4 全局配置插件 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197
15.5 本章小结 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199
16 Jenkins 运维 200
16.1 认证管理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200
16.1.1 使用 Jenkins 自带的用户数据库 . . . . . . . . . . . . . . . . . . . . . . . . . 200
16.1.2 使用 LDAP 认证 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202
16.2 授权管理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204
16.2.1 使用 Role-based Authorization Strategy 插件授权 . . . . . . . . . . . . . . . . 205
16.2.2 管理角色 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206
16.2.3 权限大全 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207
16.2.4 角色分配 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208
16.2.5 小结 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210
16.3 Jenkins 监控 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210
16.3.1 使用 Monitoring 插件监控 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210
16.3.2 使用 Prometheus 监控 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211
16.4 Jenkins 备份 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213
16.4.1 JENKINS_HOME 介绍 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213
16.4.2 使用 Periodic Backup 插件进行备份 . . . . . . . . . . . . . . . . . . . . . . . 214
16.5 汉化 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216
16.6 Jenkins 配置即代码 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216
16.7 使用 init.groovy 配置 Jenkins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217
16.8 本章小结 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219
17 自动化运维经验 220
17.1 小团队自动化运维实践经验 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220
17.1.1 先做监控和告警 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220
17.1.2 一开始就应该做配置版本化 . . . . . . . . . . . . . . . . . . . . . . . . . . . 223
17.1.3 Jenkins 化:将打包工作交给 Jenkins . . . . . . . . . . . . . . . . . . . . . . 223
17.1.4 将制品交给 Nexus 管理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224
17.1.5 让 Jenkins 帮助我们执行 Ansible . . . . . . . . . . . . . . . . . . . . . . . . . 225
17.1.6 小结 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225
17.2 ChatOps 实践 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226
17.2.1 Rocket.Chat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226
17.2.2 Hubot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227
17.2.3 Hubot 与 Jenkins 集成 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229
17.2.4 Jenkins 推送消息到 Rocket.Chat . . . . . . . . . . . . . . . . . . . . . . . . . 231
17.3 本章小结 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231
18 如何设计 pipeline 232
18.1 设计 pipeline 的步骤 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232
18.2 以 X 网站为例,设计 pipeline . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233
18.3 X 网站 pipeline 详解 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236
18.3.1 尽可能将所有的具体操作都隐藏到共享库中 . . . . . . . . . . . . . . . . . . 236
18.3.2 只生成一次制品 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236
18.3.3 对不同环境采用同一种部署方式 . . . . . . . . . . . . . . . . . . . . . . . . 237
18.3.4 配置版本化 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238
18.3.5 系统集成测试 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238
18.3.6 如何实现指定版本部署 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238
18.3.7 主干开发,分支发布 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 239
18.4 本章小结 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 239
后记 240
内容推荐
本书首先介绍笔者对软件工程生产力的独到见解。其次通过一个Hello world带领初学者入门Jenkins pipeline。接着详细介绍Jenkins pipeline的语法,以及在Jenkins pipeline中如何实现持续集成、持续交付中各个阶段,包括构建、测试、制品管理、部署等;在发现现有pipeline的步
标签
缩略图
书名 Jenkins 2.x实践指南
副书名
原作名
作者 翟志军编
译者
编者
绘者
出版社 电子工业出版社
商品编码(ISBN) 9787121360503
开本 24cm
页数 252
版次 1
装订
字数
出版时间 2019-04-01
首版时间 2019-04-01
印刷时间 2019-04-01
正文语种 CHI
读者对象 本书适合希望通过Jenkins实现持续集成、持续交付、DevOps,以提升团队生产力的技术人员和管理人员
适用范围
发行范围
发行模式 实体书
首发网站
连载网址
图书大类 教育考试-考试-计算机类
图书小类
重量
CIP核字
中图分类号 TP31-62
丛书名
印张
印次 1
出版地
整理
媒质
用纸
是否注音
影印版本
出版商国别
是否套装
著作权合同登记号
版权提供者
定价 79.00
印数
出品方
作品荣誉
主角
配角
其他角色
一句话简介
立意
作品视角
所属系列
文章进度
内容简介
作者简介
目录
文摘
安全警示 适度休息有益身心健康,请勿长期沉迷于阅读小说。
随便看

 

兰台网图书档案馆全面收录古今中外各种图书,详细介绍图书的基本信息及目录、摘要等图书资料。

 

Copyright © 2004-2025 xlantai.com All Rights Reserved
更新时间:2025/5/8 9:53:47