我眼中的DevOps
DevOps 在IT行业内近几年来在不少企业得到广泛应用,那么DevOps到底是什么呢?接下来让我们一起做一个简单的了解吧。
DevOps简介
DevOps 是由开发(developments)和运维(operations)两个单词组成,可以看做是开发、测试和运维之间的一个交集,通过一些列固化的流程来使得整个项目的开发周期变得更便捷和可靠。其核心是CI/CD(持续集成和持续发布),即通过自动的触发代码构建、发布、测试、监控等一系列自动化的操作,来提升工作效率,代替反复且容易出错的手工操作。它的出现是由于软件行业日益清晰地认识到:为了按时交付软件产品和服务,开发和运营工作必须紧密合作
DevOps流程介绍
下面给大家简单的介绍一下一个比较简单的devops流程,也是我在第一家公司里面的流程
1、开发人员提交代码到源码管理仓库(git/svn),源码管理的话 ,现在公司大部分都自己搭建了gitlab服务器,并对接了公司的ldap域认证,对每个用户的权限进行严格的控制
2、代码提交后,自动出发代码编译操作,检查是否能编译通过,能编译通过,就接着出发代码扫描(包括代码编写风格、是否有安全漏洞之类、语法错误之类的),有写单元测试脚本的话也顺带执行一下单元测试脚本。在这个过程中,针对不同的编程语言,需要集成不同的插件或工具去进行扫描。
3、发布代码到指定的环境。测试阶段的话,一般检测到代码变更后,可以在构建后自动发布到测试环境,生产环境的话,则需要在验证通过之后才能发布。在这中间会搭建仓库用来存储版本发布的相关部署包。
4、发布成功后,运行测试人员写好的验证脚本进行回归验证,如果这个过程中有任何一个环境出现报错的话,可以以邮件或者其他方式提醒用户
补充说明:以上只是列举了一个最简单的流程,全流程都是可以实现自动触发操作,不需要手动操作。在这中间还可以根据自己公司的实际业务情况,进行一些环节的删减操作,在这小编再列举一下小编待过的第一家公司的devops流程实现的一些功能:
统计开发人员每天、每周提交的代码量,某个项目针对某个版本的代码变化量,代码行数、代码未解决的bug数量
自动发布测试环境,自动执行测试用例
自动扫描代码,检查是否有安全漏洞,可以采集一些数据做一个简单的报表 ,给公司的QA分析各个项目每月的版本质量情况以及研发的效率。
自己搭建DevOps平台需要用到的一些工具
下面就简单的介绍一些我了解过的工具(当然也有一些其他的工具我没接触过的)
-
源代码管理工具:git、svn
-
持续集成工具:jenkins
-
仓库管理:nexus、artifactory (管理jar包,dll文件,docker镜像等)
-
代码编译工具:maven、ant、gradle
-
配置管理/自动化部署工具:chef、ansible等
-
其他:要准备对应的服务器、搭建服务器监控平台
本次就先分享这么多 ,要搭建和维护好devops平台,还需要去了解一下shell、batch脚本,以及一些其他脚本,方便处理一些复杂的操作。接下来我将根据自己的记忆,陆续分享一些在这个过程中用到的技术点,大家在学习devops相关内容时遇到问题 ,也可以与小编一起讨论,小编也很愿意与大家一起去学习这个行业的一些技术。