简单介绍项目实践背景
Jenkins
自2018年开始,我主要的工作是集成DevOps工具链提升研发部门应用的发布效能。当时主要的持续集成工具就是Jenkins,使用自由风格类型的作业来完成一些自动化任务。随着Jenkins 2.0核心的特性PipelineAsCode的理念设计出现,我们逐步完成了从自由风格类型转换到Pipeline类型的作业。
自由风格类型的作业,这里提一点就是“自由”, 所谓的自由都是要付出一些代价的。因为太“自由”所以当我维护上千个作业时,除了点点点就是点点点,这一点经历过的人应该会懂得的,哈哈。
Pipeline As Code
Pipeline类型的作业我们可以基于Groovy代码编排和定义工作流程,期初我们为每个项目编写了一套jenkinsfile,但是随着功能的扩展,Jenkinsfile维护也成了一个复杂的问题。于是通过Jenkins共享库的实践,抽取Jenkinsfile中定义的功能函数,然后通过一个标准的Jenkinsfile来维护许许多多不同技术栈和类型的作业,这样也就实现了统一的维护和管理,减轻了运维的工作量,实现“一处修改,全部应用”的效果。
SonarQube代码质量
持续集成阶段需要加上工程的质量检查阶段,我们搭建了SonarQube代码质量平台。当时我记得是LTS 6.x版本, 后来升级到7.x版本。SonarQube是一个代码质量平台,其安装部署不算复杂,需要DB和Java, ElastiSearch等组件。
但是后来7.x版本发生了变化,从Java8 升级到Java 11, 以及不支持MySQL数据库转换成PostgreSQL数据库。我们使用SonarScanner CLI作为客户端,统一的进行代码扫描。SonarQube支持的扫描工具也可以与常见的项目构建工具Maven、Gradle进行集成,也就是通过命令行即可完成代码扫描。开源版本的软件可靠性稳定性都需要自己保障了, 在很多团队自定义代码质量阈和质量规则的时候,就需要调用API对每个项目代码扫描之前,进行配置定义对应的质量阈和质量规则。
Nexus3 制品库管理
Nexus我们作为制品库的管理软件, 其可靠性和稳定性是经过验证的。使用Nexus3 作为一些yum,go,linuxs,python源管理,还可以将项目生成的应用制品纳入制品库管理,这样可以实现“同一个软件包,发布到多个环境” 或者同一个环境,基础设施环境分为Dev、Test、 Uat、STG、PROD等环境,但是每个环境的配置应该是相同的,除了硬件资源配置外,软件操作系统环境方面不应该出现不同的情况。如果是使用的私有云、公有云的VM虚机,那就需要通过Ansible或者SaltStack等配置管理工具进行统一配置以实现环境标准化。
Docker Kubernetes 容器化
随着容器和Kubernetes的盛行,项目应用逐渐容器化,编写Dockerfile生成Docker镜像,然后将Docker镜像上传到镜像仓库管理。在Kubernetes环境,我们还需要编写应用的基础资源配置YAML清单文件,最后通过Kubectl,helm通过进行应用的发布。
GitOps 基础设施即代码
应用的标准化配置GitOps已经实现了,那么基础设施层面的GitOps如何实现呢。基础设施即代码,可以通过Terraform 工具编写代码定义资源,然后自动化的开通云上资源。这样就可以实现了以代码的方式描述基础设施资源,一键的发布。
为什么要写这本书?
编写一本书是需要一个过程,也是需要一定的技术沉淀的,更需要自己的内心安静下来。显然当时我是做不到的, 为了传播速度我开始编写PPT,然后后录制视频课程。这个期间也发生了些事情,我第一次去湖北过年,赶上了疫情,待了将近4个月才返京,这个期间我一直坚持创作和分享,帮我度过了这个特殊的时期,最终上线完成!
2020年前,我上线了《Jenkins实践》专题课程,随后得到了大量伙伴的关注。随着大家的关注我也是热血沸腾的持续更新了这个系列的课程内容,把我所有的实践都融入到了课程中。
随后视频课程,陆续上线了各个平台。视频的传播速度很快,但是内心还是想要写一本书,摸得到的东西比较实质,于是还是决定编写一本纸质书!
图书的编写过程
图书的编写过程是内心复杂的,也是一个持续见效的过程。这个过程我更定义为内心的一场修炼。不过好在我们经过很多期的训练营沉淀,慢慢的形成了一些文档,随后我逐步检查文档然后形成了这本书的目录章节。
我的书柜上有很多本书, 我看到了大家写书过程的总结。写书是一个消耗时间且耐心的过程。于是23年我合理的安排了时间,基本上是周末完成的,也经历了晚上失眠然后起来写书的时候。
现在图书的内容和上市
2024年03月份,终于收到了出版社的通知,我的图书样书已经出来了,非常惊喜!!、
最后,感谢大家的关注,我在出版社申请了新书优惠购书价格链接,如果您感兴趣可以入手这本书,如果您在阅读这本书有任何技术实践疑问,我很乐意进行交流。
链接:https://item.jd.com/14023869.html