目录
目录
前言
关于CI/CD
企业级CI/CD实战
关于《DevOps企业级CI/CD实战》
编辑推荐
内容简介
作者简介
图书目录
书中前言/序言
《DevOps企业级CI/CD实战》全书速览
结束语
前言
作为开发者,对于编程语言并不陌生,随着技术圈的不断进步和发展,越来越多的编程语言诞生和问世。开发者们更喜欢稳定、好用、强大的编程语言,因为可以解决很多问题,也很稳定。随着软件开发的复杂性和规模不断增加,传统的软件开发和运维模式已经无法满足企业的需求。DevOps是一种新的软件开发和运维模式,它可以帮助企业提高软件开发和运维效率,降低成本,提高软件质量。那么本文就来分享一下DevOps在企业中的实战应用。
关于CI/CD
先来了解一下CI/CD,它是DevOps的重要组成部分,它可以帮助企业实现软件开发和运维的自动化,据我所知CI/CD包括以下几个步骤:
- 持续集成(CI):将开发人员提交的代码自动集成到版本控制系统中,并进行自动构建和测试。
- 持续交付(CD):将构建好的软件自动部署到生产环境中。
关于CI/CD的优势,CI/CD可以为企业带来以下优势:
- 提高软件开发和运维效率:CI/CD可以帮助企业自动化软件开发和运维过程,从而提高效率。
- 降低成本:CI/CD可以帮助企业降低软件开发和运维成本。
- 提高软件质量:CI/CD可以帮助企业提高软件质量。
- 缩短上市时间:CI/CD可以帮助企业缩短软件上市时间。
企业级CI/CD实战
接下来分享一下关于企业级CI/CD实战相关的内容,以下是一些企业级CI/CD实战的例子:
- 谷歌:谷歌使用CI/CD来管理其庞大的软件开发和运维工作。谷歌的CI/CD系统每天可以处理超过100万次代码提交,并自动部署到生产环境中。
- 亚马逊:亚马逊使用CI/CD来管理其电子商务平台的软件开发和运维工作。亚马逊的CI/CD系统每天可以处理超过1000万次代码提交,并自动部署到生产环境中。
- 微软:微软使用CI/CD来管理其Windows操作系统的软件开发和运维工作。微软的CI/CD系统每天可以处理超过100万次代码提交,并自动部署到生产环境中。
关于《DevOps企业级CI/CD实战》
接下来给大家推荐一本关于DevOps相关的书籍,这是一本想要入门DevOps的开发者离不开的干货图书,一经上市就登上了当当“计算机与互联网”图书排行榜前列。本书从DevOps基础到CI/CD实战,助你在DevOps领域取得成功!另外,关注本文博主,点赞+收藏本文,且在本文评论区评论“我要入门DevOps”,将选取三名幸运读者送出纸质版《DevOps企业级CI/CD实战》一本,截止时间:2024.04.05。入手《DevOps企业级CI/CD实战》传送门:《DevOps: 企业级CI/CD实战》(李泽阳)【简介_书评_在线阅读】 - 当当图书或者《DevOps: 企业级CI/CD实战》(李泽阳)【摘要 书评 试读】- 京东图书,个人觉得这本书非常的不错,是一本不可多得的好书,值得拥有去学习。
编辑推荐
本书主要讲解DevOps方法论中的CI/CD部分。从基础理论到落地实践,分别从持续集成阶段工具和持续部署阶段工具出发和落地。另外本书还融合了笔者多年开发经验与实践的思考,以供读者学习和借鉴。
内容简介
本书主要围绕DevOps的核心CI/CD,详细讲解了企业级CI/CD的相关技术内容。全书共11章,首先讲解了持续集成系统Jenkins入门知识、Jenkins运维管理、Jenkins流水线的语法与进阶。接着讲解了持续集成阶段的工具平台实践、GitLab版本控制系统实践、Maven等构建工具实践、SonarQube代码质量平台实践、Nexus Repository 3制品库平台实践。持续部署分别基于云主机和Kubernetes环境的持续集成和持续部署实践。最后讲解了使用基础设施即代码工具Terraform管理阿里云平台资源。通过本书的学习,读者将熟练掌握企业级CI/CD的实践方法和思路。
本书适合具有1~3年运维或开发工作经验、或者对DevOps感兴趣的读者学习。
作者简介
李泽阳 DevOps领域实践者,Jenkins官方认证工程师。一直深耕于DevOps和云原生领域,曾参与多个金融行业和互联网行业大型团队DevOps项目实施与改进,积累了丰富的DevOps工程实战经验。
图书目录
第1章 Jenkins系统入门 1
1.1 Jenkins系统概述 1
1.1.1 Jenkins概述 1
1.1.2 Jenkins应用场景 2
1.2 Jenkins系统安装 3
1.2.1 准备工作 4
1.2.2 安装Jenkins 5
1.2.3 初始化 7
1.2.4 安装Agent节点 11
1.3 Jenkins数据目录 16
1.4 本章小结 18
第2章 Jenkins系统管理 19
2.1 用户管理 19
2.1.1 Jenkins本地用户 19
2.1.2 LDAP认证集成 21
2.2 权限管理 24
2.2.1 准备 24
2.2.2 安装Role-based插件 26
2.2.3 创建角色 27
2.2.4 授权角色 29
2.2.5 测试权限 29
2.3 凭据管理 30
2.3.1 安装凭据插件 30
2.3.2 创建凭据 32
2.4 本章小结 33
第3章 Jenkins Pipeline实战 34
3.1 什么是Pipeline 34
3.1.1 Pipeline简介 34
3.1.2 为什么使用Pipeline 35
3.1.3 什么是Jenkinsfile 36
3.2 Pipeline核心语法 36
3.2.1 agent节点 37
3.2.2 stages阶段 38
3.2.3 post构建后操作 38
3.2.4 environment环境变量 39
3.2.5 options运行选项 40
3.2.6 parameters参数 41
3.2.7 triggers触发器 42
3.2.8 input交互 43
3.2.9 when阶段运行控制 44
3.2.10 parallel并行运行 45
3.3 Pipeline开发工具 46
3.4 共享库实践 49
3.4.1 创建共享库 49
3.4.2 编写共享库代码 50
3.4.3 修改全局设置 50
3.4.4 加载共享库 52
3.5 本章小结 53
第4章 Jenkins Pipeline进阶 54
4.1 Groovy编程语法 54
4.1.1 数据类型 54
4.1.2 控制语句 58
4.1.3 异常处理 61
4.1.4 函数 61
4.2 Jenkins触发器 62
4.2.1 安装触发器 63
4.2.2 配置触发器 63
4.2.3 解析Request参数 65
4.2.4 解析Header参数 68
4.2.5 解析Post参数 70
4.3 常用的DSL语句 73
4.3.1 获取当前触发用户 73
4.3.2 JSON数据解析 75
4.3.3 在Pipeline中使用凭据 76
4.3.4 自定义构建ID和描述 77
4.4 本章小结 78
第5章 项目代码管理 79
5.1 GitLab系统入门 79
5.1.1 GitLab概述 79
5.1.2 GitLab安装部署 80
5.2 GitLab工作流 82
5.2.1 创建项目组和项目 82
5.2.2 生成和提交项目代码 86
5.2.3 分支开发策略 87
5.3 提交流水线实践 89
5.3.1 Jenkins配置 89
5.3.2 GitLab配置 92
5.3.3 编写Pipeline 96
5.3.4 Pipeline优化 100
5.4 项目构建工具 102
5.4.1 Maven构建 102
5.4.2 Gradle构建 104
5.4.3 NPM构建 106
5.5 本章小结 108
第6章 代码质量平台实战 109
6.1 SonarQube系统入门 109
6.1.1 SonarQube概述 109
6.1.2 SonarQube安装 111
6.1.3 插件管理 113
6.2 SonarQube代码扫描 115
6.2.1 SonarQube质量配置 115
6.2.2 SonarQube质量阈 116
6.2.3 Sonar Scanner配置 117
6.3 SonarQube系统集成 121
6.3.1 准备工作 121
6.3.2 命令行方式 122
6.3.3 Jenkins插件 127
6.3.4 多分支代码扫描 130
6.4 本章小结 134
第7章 制品库平台实战 135
7.1 制品库平台入门 135
7.1.1 管理规范 135
7.1.2 Nexus Repository 3概述 136
7.2 Nexus Repository实践 137
7.2.1 Nexus Repository 3安装 137
7.2.2 搭建Maven私服仓库 138
7.2.3 搭建Maven本地仓库 140
7.2.4 制品上传方式 141
7.3 Nexus Repository扩展实践 144
7.3.1 调试REST API 144
7.3.2 上传Raw类型制品 146
7.3.3 Jenkins插件上传制品 147
7.4 本章小结 149
第8章 云主机环境持续部署 150
8.1 项目准备工作 150
8.1.1 分支策略 150
8.1.2 环境准备 151
8.1.3 Ansible配置 152
8.1.4 Pipeline设计 153
8.2 持续集成实践 154
8.2.1 准备工作 154
8.2.2 设置Pipeline 157
8.3 持续部署实践 164
8.3.1 准备工作 164
8.3.2 设置Pipeline 167
8.4 本章小结 173
第9章 Kubernetes基础 175
9.1 Docker容器基础 175
9.1.1 Docker简介 175
9.1.2 Docker镜像构建 176
9.1.3 Docker镜像管理 178
9.2 Kubernetes基础 180
9.2.1 资源对象 181
9.2.2 Kubectl工具发布 183
9.2.3 Helm工具发布 183
9.3 Kubernetes部署策略 184
9.3.1 滚动更新 184
9.3.2 零停机部署 185
9.4 本章小结 186
第10章 Kubernetes持续部署 187
10.1 持续集成流水线 187
10.1.1 准备工作 187
10.1.2 设置Pipeline 190
10.1.3 启用GitOps 196
10.2 基于Kubectl持续部署 205
10.2.1 准备工作 205
10.2.2 设置Pipeline 207
10.3 基于Helm持续部署 211
10.3.1 准备工作 212
10.3.2 设置Pipeline 213
10.4 本章小结 218
第11章 基础设施即代码 219
11.1 Terraform入门 219
11.2 供应商Provider 221
11.3 定义云资源 224
11.4 开通资源 226
11.5 本章小结 229
书中前言/序言
前 言
创作背景
DevOps是一组实践,由人、工具和文化理念组成。DevOps的核心是实现软件开发团队和IT运维团队之间的流程自动化。自2018年起,笔者参与了大型企业中多个项目的DevOps项目实施和改进,从中积累了丰富的实践经验。于是将实践思考与开发经验整理成一本书分享给同路人共同学习和交流。
DevOps涵盖的范围非常广,本书主要讲解DevOps方法论中的CI/CD部分。从理论到实践,分别从持续集成阶段工具和持续部署阶段工具出发和落地。注意:本书中的工具均采用开源版本。
目标读者
运维工程师。
开发工程师。
DevOps工程师。
路线图
本书共11章:
第1章介绍了持续集成和持续部署的核心工具Jenkins的入门知识,包括Jenkins持续集成工具的安装部署。
第2章分别通过用户管理、权限管理、凭据管理3个方面讲解Jenkins的系统运维管理。读者可以掌握Jenkins运维管理技能。
第3章开始讲解Jenkins的核心特性流水线即代码实践。读者可以学习Pipeline定义、Pipeline核心语法、Pipeline开发工具、共享库实践。
第4章是对Pipeline的进阶实践。读者可以学习基于Groovy扩展流水线、流水线触发器、流水线中常用的DSL方法。
第5章讲解持续集成阶段的代码管理平台实践。读者可以学习GitLab代码管理平台实践和项目构建工具实践,了解从源代码管理到编译构建的过程。
第6章讲解持续集成阶段的代码质量平台实践。读者可以学习SonarQube平台的安装部署、配置管理、与Jenkins集成实践。
第7章讲解持续集成阶段的制品库平台实践。读者可以学习使用Nexus Repository 3集中管理源代码构建制品和依赖,便于一次构建,发布到不同的环境中运行。
第8章讲解持续部署阶段的云主机环境下的持续集成和持续部署流水线案例。读者可以学习使用Jenkins持续集成生成制品,再通过集成Ansible进行批量发布。
第9章讲解Kubernetes环境持续集成和持续部署相关的基础知识。读者可以学习Docker容器、Kubernetes基础知识,以及常用的发布策略原理,这些是对下一章实践的铺垫。
第10章讲解持续部署阶段的Kubernetes环境下的持续集成和持续部署流水线案例。读者可以学习应用从源代码构建生成镜像、集成Helm发布到Kubernetes环境的整个过程。
第11章扩展Terraform基础设施及代码工具的实践,讲解了Terraform工具的实践方式。读者可以学习使用Terraform以代码的方式管理阿里云平台资源。
读者服务
示例代码。
学习视频。
读者可以通过扫码访问本书专享资源官网,获取示例代码、学习视频,加入读者群,下载最新学习资源或反馈书中的问题。
勘误和支持
由于笔者水平有限,书中难免会有疏漏和不妥之处,恳请广大读者批评指正。
致谢
首先,我要感谢我的家人,他们是我最可靠的后盾,一直在背后支持我,给我鼓励和信心,让我能够专注于本书的撰写。感谢清华大学出版社编辑,她为这本书的撰写和出版做出了巨大的贡献。她的专业知识和敏锐的洞察力帮助我不断改进书稿,使其更加出色。此外,我还要感谢那些曾经为我提供帮助的人,包括我的导师、同事、朋友。他们的支持和鼓励是我前进的动力。最后,我想向所有的读者表示感谢,希望你们能够喜欢这本书,并且从中获得更多的知识和技能。
李泽阳
《DevOps企业级CI/CD实战》全书速览
结束语
通过本文的分享讲解,不难发现,CI/CD是DevOps的重要组成部分,它可以帮助企业提高软件开发和运维效率,降低成本,提高软件质量。企业在实施CI/CD时,需要考虑CI/CD的优势和挑战,并采取措施来应对这些挑战。最后,通过学习和实践,我们可以提高自己的编程技能,并在实际开发中发挥更大的作用,让我们一起探索CI/CD的奥秘吧!