DevOps - 持续集成
最近在担任公司部门的DevOps Champion的角色,一直觉得这个只是一个协调者的角色(而不是一个SME的角色),我的工作大概就是将每个项目的devops工具收集一下,然后用图表的形式去体现大家用devops的工具情况,再就是分享一下好的devops实践. 在我们部门里,我自己也是一个tech leader的角色,也带着两个项目在身上,我的项目可以说是部门的number one了,我们有自动化构建,部署,和部分自动化测试,在我收集的过程当中,有几个项目也说自己也都做好了自动化构建和部署,我也知道他们并不是实行的很好,但我就是找不出个问题来,另我非常的困惑, 前几天和我们的管理教练聊了以后,另我豁然开朗,其实做好这个工作,并不只是一个协调者,我还要推动整个部门的devops前进,就像敏捷实践一样,要让我们的问题暴露出来,让他们理解什么是持续集成,激发他们自己做持续改进。
我们是金融行业,众所周知,金融IT业是走得比较慢的,DevOps这个主题太大了,我们今天来聊聊持续集成吧,我们要是把持续集成做好了,说devops做好了一半也不出奇。
以前说起持续集成,我眼中就只有三个东西,自动化构建,自动化部署和自动化测试,然后就没了。难道我有这三个东西还没有达到持续集成吗?说你没达到,一点也不出奇,下面听我慢慢道来。
来说说我眼中的持续集成是怎么样的.
1. 是否能自定义自己的流水线?
我相信,每个团队可能都有自己的流水线,比如有些会有sonar在里面,有些会有smoketest,等等之类,但团队是否能根据自己的需求去自定义自己的流水线呢?
我们之前用的buildforge是不可以自定义流水线的,现在用的Jenkins公司也不给我们自己定义pipeline的,我们是用了一个Jenkins的build pipeline插件将一个一个job连接起来的流水线,其中也自己写了不少的shell script去自定义我们的东西,在银行里搞devops真是道路曲折呀.
2. 开发人员提交代码后是否能得到快速反馈?即是否会运行JUnit去验证代码的正确性,部署后是否会运行E2E测试去验证代码的正确性.
敏捷的一个重要价值观就是持续反馈,但是怎么样实现呢?devops可以帮到我们,所以我们开发人员写完代码之后,能快速的运行JUnit, smoketest, E2E Test的话,这样才能快速给开发人员得到快速的反馈,同样,业务人员也可以要求部署团队尽快部署到UAT,快速在UAT的环境中得到快速反馈。 所以,如果在敏捷中得到快速反馈,scrum并没有告诉我们怎么做,但devops告诉我们,可以这样做 >_<
3.团队的JUnit的测试覆盖率是多少?
在TDD时候,我们是强调先写测试才写代码,但我们知道这样比较难行,因为太少公司能做到这样了,不过我们就因此不写JUnit了吗?不,我们要写,我们不得不写,但写多少呢?根据Mike Cohn的测试金字塔,JUnit的比例要达到80%,你的JUnit覆盖率达到了吗?
4. E2E的测试覆盖率是多少?(有些团队还会做服务测试0)
有这么多的JUnit我们还需要E2E测试吗?我们需要,当我们部署完后,我们需要运行一下E2E测试,以确保我们的系统是可以照常运行了,比例是多少呢?还是测试金字塔,Mike Cohn告诉我们是5%到10%,我们需要E2E测试,但我们并不需要太多,因为E2E的测试用例是成本比较大的.
5. DEV,SIT和UAT的部署是否是同一个二进制文件(即是否用同一个jar/war/ear去部署的)?
用同一个二进制包进行部署,我相信开发人员对这个深有体会,很多时候我们会遇到这样一个问题,明明在本地可以的呀,为什么上到SIT就不行了, SIT还是可以的呀,UAT怎么可能出问题呢?我加入这个项目前,我们的maven是用了profile的一个功能,对不同的环境运行不同的maven命令,这样打出来的二进制包是不一样的,就是说每个环境用的都是不一样的package,天哪,这不是反天理吗?后来我就将环境的property放到外面去了, 这才解决这个问题。所以确保每个环境使用的是相同的package,尤其要和production的要一样,否则出了问题的时候,你会很难发现是哪里出了问题。
6. 多久进行一次SIT部署和测试?
这里根据我的项目特点,我们是要求手动SIT部署,因为开发人员提交代码后,我们会执行DEV部署和DEV E2E测试,因为我们不知道开发人员什么时候提交代码,所以这样的话,我们的DEV环境就会非常的不稳定,当在部署的时候,DEV是不可用的,测试人员是在SIT测试的,所以为了保持稳定的环境,我们会对SIT进行手动控制。
7. 多久进行一次UAT的部署和测试?
为什么会有这一项呢, 因为通常QA或者用户是在这个环境测试的,如果UAT足够频繁,这说明你的产品被验证得越频繁,你的产品则越能得到快速的反馈。
DevOps - 持续集成的更多相关文章
- 构建gitlab+Jenkins+harbor+kubernetes的DevOps持续集成持续部署环境
构建gitlab+Jenkins+harbor+kubernetes的DevOps持续集成持续部署环境 整个环境的结构图. 一.准备工作 gitlab和harbor我是安装在kubernetes集群外 ...
- DevOps - 持续集成(Continuous Integration)
1 - 持续集成简介 持续集成(Continuous integration,简称CI)是软件的开发和发布标准流程中最重要的部分. 作为一种开发实践,在CI中可以通过自动化等手段高频率地去获取产品反馈 ...
- devops持续集成
目录 Devops 版本控制系统 Git安装 Git使用 git四种状态 git基础命令 git分支 git合并冲突 git标签 git命令总结 Github使用 创建仓库 HTTP协议 SSH协议 ...
- devops持续集成,Centos7.6下gitlab+jenkins(pipeline)实现代码自动上线
持续集成 gitlab+jenkins(pipeline)实现代码自动上线 环境准备:Centos7.6版本ip:192.168.0.13 主机名:gitip:192.168.0.23 主机名:jen ...
- 【下一代核心技术DevOps】:(五)微服务CI与Rancher持续集成
1. 引言 DevOps的核心魅力是快速的持续集成交付,降低研发和实施运维之间的交互,使得传统的各种扯皮现象统统消失.最重要的是降低成本 保障产品交付可靠性. 使用Rancher作为持续集成的关键环节 ...
- 03 持续集成和部署/基础设施 - DevOps之路
02 持续集成和部署/基础设施 - DevOps之路 文章Github地址,欢迎start:https://github.com/li-keli/DevOps-WiKi 服务的持续集成和部署这里有两套 ...
- [dotnet core]落地微服务特色的DevOps管道,持续集成/部署到kubernetes。
目录 前言 目标 工具 - 最小的学习成本 方案 - 愿景 1. 持续集成 - CI 2. 持续部署 - CD 部署环境 1. 部署gitlab-runner 2. 注册gitlab-runner 搭 ...
- 在推送提交之后阻止Azure DevOps (TFS)持续集成
在Azure DevOps服务器上配置生成定义时,可以配置连续集成(CI)生成.每次签入或提交到源代码库时都会自动运行一个CI构建.这种机制允许开发人员启动一个自动化的过程,例如编译和部署构建.这是一 ...
- Android Studio 集成 TFS,实现安卓移动开发的持续集成和交付(DevOps)
目录 1 集成TFS系统.... 1.1 概述.... 1.2 安装TFS插件.... 1.2.1 在线安装方式.... 1.2.2 离线安装方案.... 1.3 常见操作.... 1.3.1 新建G ...
随机推荐
- Linux quota磁盘配额
quota:磁盘配额 限制某一群组所能使用的最大磁盘配额 限制某一用户的最大磁盘配额 使用限制: 仅能针对整个filesystem 核心必须支持quota quota的记录文件 只对一般身份使用者有效 ...
- resent|aspiration|deficiency|diagnosed|distract|emphasize
VERB 怨恨;憎恶;愤恨If you resent someone or something, you feel bitter and angry about them. She resents h ...
- 使用Spring AOP 实现日志管理(简单教程)
有时候,我们在做项目时会遇到这样的需求: 给XXX.java中的所有方法加上指定格式的日志输出. 针对这种指定类.或者指定方法进行共性操作的功能,我们完全可以使用Spring AOP来实现. 本文使用 ...
- Nginx笔记总结十五:nginx+keepalive+proxy_cache配置高可用nginx集群和高速缓存
nginx编译 wget http://labs.frickle.com/files/ngx_cache_purge-2.3.tar.gz ./configure --prefix=/usr/loca ...
- 吴裕雄--天生自然 R语言开发学习:高级数据管理(续三)
#-----------------------------------# # R in Action (2nd ed): Chapter 5 # # Advanced data management ...
- 吴裕雄--天生自然 R语言开发学习:功效分析
#----------------------------------------# # R in Action (2nd ed): Chapter 10 # # Power analysis # # ...
- WWW 2015:一个神奇的会议
2015:一个神奇的会议" title="WWW 2015:一个神奇的会议"> 作者:微软亚洲研究院研究员 袁进辉 WWW 2015(24th Internatio ...
- 神州优车挂牌新三板!专车B2C对决C2C将愈发狂暴?
近日,全国中小企业股份转让系统公告显示,神州优车已获准在新三板挂牌.神州优车作为神州专车的主营主体,此次挂牌新三板意味着神舟专车成功突围,成为"专车第一股".相比滴滴.Uber中国 ...
- iOS多线程之Thread
多线程 • Thread 是苹果官方提供的,简单已用,可以直接操作线程对象.不过需要程序员自己管理线程的生命周期,主要是创建那部分 优缺点 面向对象,简单易用 直接操作线程对象 需要自己管理线程生命周 ...
- IDEA中有哪些让你相见恨晚的技巧?
本期让我们来盘点一下,idea中有哪些在提高开发效率上相见恨晚的技巧. 自动补全代码抽取编辑代码块代码模板 自动补全 1.快速输出 2.快速定义成员变量3.快速格式化4.快速判空5.快速取反6.快速返 ...