2024三掌柜赠书活动第十九期:DevOps企业级CI/CD实战

目录

目录

前言

关于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的奥秘吧!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/499207.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

EI、Scopus双检索 | 2024年第四届控制理论与应用国际会议

会议简介 Brief Introduction 2024年第四届控制理论与应用国际会议(ICoCTA 2024) 会议时间:2024年10月18 -20日 召开地点:中国杭州 大会官网:www.icocta.org 控制理论作为一门科学技术,已经广泛地运用于我们社会生活方方面面。随着…

java-pytorch 使用手动下载FashionMNIST数据集进行测试

java-pytorch 使用手动下载FashionMNIST数据集进行测试 先定义训练数据和测试数据的位置查看一下读取到的标签数据格式使用loc和iloc访问下数据,便于下面操作使用read_image函数查看下图片的数据大小开始写数据集使用DataLoader去加载我们自己的数据看下加载后的dat…

游戏陀螺首条报道(一)|看完GDC 2024,我找到了网易数智引领游戏AI技术的关键!

经过近几年的爆发式增长,AI技术在游戏行业的应用取得了显著的进步。从去年多为“AI生成文字、图片、代码”等工具型应用,发展到了如今可以深入至游戏研发、运营的各个环节,这也让今年的游戏开发者大会(GDC)显得格外的热…

面试官:你是如何解决跨域的?

在近期的面试中,面试官针对我的项目,问到了 如何解决跨域? 没答好,我想通过这篇文章,巩固一下这方面的知识,分享一下我对于这个问题的理解,希望也能对大家有所帮助。 我的回答 跨域我们需要从浏…

javaWeb项目-火车票订票信息系统功能介绍

项目关键技术 开发工具:IDEA 、Eclipse 编程语言: Java 数据库: MySQL5.7 框架:ssm、Springboot 前端:Vue、ElementUI 关键技术:springboot、SSM、vue、MYSQL、MAVEN 数据库工具:Navicat、SQLyog 1、Spring Boot框架 …

IP/TCP--解决为什么电脑连上了有线网就不能再连WIFI【转载】

文章目录 第一种情况:WIFI与有线网在同一网段下1、查看路由信息2、调整跃点数 第二种情况:WIFI与有线网不在同一网段下跃点数概念路由器设置入口 【注意适用情型:需要同时用到内网(不能上公网的内部网络)和互联网。】 …

Spring Cloud+Spring Alibaba笔记

Spring CloudSpring Alibaba 文章目录 Spring CloudSpring AlibabaNacos服务发现配置中心 OpenFeign超时机制开启httpclient5重试机制开启日志 SeataSentinel流量控制熔断降级热点控制规则持久化集成 OpenFeign集成 Gateway MicrometerZipKinGateway路由断言过滤器 Nacos 服务…

什么是广告可见性测量 如何测量广告可见性

广告可见性测量 & 如何测量广告可见性 --- 一起来来认识MOAT 现在是2024年,大家或许还记得大约8年前广告可见性(Ad viewability)成为数字媒体世界的一种货币以来,出版商一直处于不利地位。当广告商用不同的工具和技术武装自…

在微信上处理小程序用户反馈具体的方法

想必大家在开发小程序的时候,一定遇到这种情况: 为了用户有更好的体验,我们会定期登陆微信小程序来查看用户反馈并对用户的问题进行回复和处理,但是这种方法的缺点就是最多间隔48小时要进行登陆一次以及回复用户不及时。 这样的话…

2月运动鞋行业线上电商数据分析:国产品牌高歌猛进,占据热榜90%

随着天气回暖,踏青出行的人越来越多,运动鞋市场呈现出繁荣状态,尤其是国产品牌。 根据鲸参谋数据显示,2024年2月在京东平台的运动鞋销量表现强劲,累计约233万件,同比上个月涨幅了58%;销售额累计…

泛型的通配符及擦除机制详解

目录 一、通配符解决什么问题 二、通配符上界 三、通配符下界 ​编辑 四、泛型类的擦除机制 引言: 在这篇文章中,我主要介绍前一篇泛型没介绍完整的泛型通配符和泛型的擦除机制Java中泛型的详细介绍 ? 用于在泛型的使用,即为通配符 一、通…

Qt+OpenGL入门教程(二)——OpenGL渲染管线

渲染管线是图形学不可或缺的,在学习它之前,我们先了解一下什么是管线? 管线/流水线 当我们谈到管线时,我们指的是一个由多个阶段组成的过程,每个阶段都完成任务的一部分。在现实世界中,流水线的概念在许多…

小白了解Pinia第2集 · 三大核心状态Getters、Actions以及Plugins 插件

三大核心状态 state 第1集有详细讲解:https://blog.csdn.net/qq_51463650/article/details/137137080?spm1001.2014.3001.5501 getters Getter 完全等同于 Store 状态的 计算值。 它们可以用 defineStore() 中的 getters 属性定义。 他们接收“状态”作为第一个…

C++从入门到精通——缺省参数

缺省参数 前言一、缺省参数概念二、缺省参数分类位置参数的缺省参数全缺省参数半缺省参数 关键字参数的缺省参数函数指针的缺省参数lambda表达式 三、缺省参数的具体代码展示main.cpp 前言 缺省参数是在函数定义时指定的默认值,当调用函数时未提供该参数的值时&…

统信 UOS V20 一键安装 Oracle 12CR2(220118)单机版

Oracle 一键安装脚本,演示 统信 UOS V20 一键安装 Oracle 12CR2(220118)单机版过程(全程无需人工干预):(脚本包括 ORALCE PSU/OJVM 等补丁自动安装) ⭐️ 脚本下载地址:…

云主机8核16G配置租用优惠价格1198元1年、4688元三年

京东云8核16G租用优惠价格1198元1年、4688元三年,配置为8C16G-270G SSD系统盘-5M带宽-500G月流量,华北-北京地域。京东云8核16G服务器活动页面 atengyun.com/go/jd 京东云8核16G租用优惠价格 京东云:轻量云主机CPU内存:8C16G公网带…

AIGC重塑金融 | 大模型在金融行业的应用场景和落地路径

作者:林建明 来源:IT阅读排行榜 本文摘编自《AIGC重塑金融:AI大模型驱动的金融变革与实践》,机械工业出版社出版 目录 01 大模型在金融领域的 5 个典型应用场景 02 大模型在金融领域应用所面临的风险及其防范 03 AIGC 技术的科…

职场沟通教训 程序汪改了一行代码,导致测试和开发大战

本文章有视频的,请到B站 我是程序汪 观看 程序汪改了一行代码,导致测试和开发大战,职场沟通教训 程序汪改了一行代码,导致测试和开发大战 鸡汤文 每个人都会在沟通上出问题 工作上沟通出问题可能让你郁闷一天、丢了客户、损失金…

解决Nginx请求转发将POST变为GET的问题

先说问题 我配置了Nginx代理,目的是将请求转发到指定的后端,对于普通的JSON数据,没有什么问题。 但是有文件上传的就不一样了,我需要指定到第3方的地址。然而常规的配置完成后,Nginx实际的转发动作改变了我的请求方式 location …

鸿蒙开发人才紧缺!这份《HarmonyOS教学视频》帮你更快上手鸿蒙

去年9月,华为宣布鸿蒙原生应用全面启动,基于开源鸿蒙开发的 HarmonyOS NEXT 鸿蒙星河版将在今年秋天正式和消费者见面。该版本系统底座将由华为全线自研,去掉传统安卓 AOSP 代码。 这意味着,鸿蒙星河版将不再兼容安卓应用&#xf…