优云automation实践技巧:简单4步完成自动化构建发布

1.jpg

前言:本文介绍了优云是如何将运维自动化产品应用到日常工作实践中,并通过内部用户的大量使用来不断改进产品的用户体验。

各位看官,这不是一个揭发单身有为青年因同事们天天秀恩爱而受到一万点暴击伤害的故事。这里指的狗粮,不是真正的“狗粮”——当然,也不是你们认为的狗粮。

事实上,现在很多涉足产品开发的互联网公司,都会提到“吃狗粮”这一概念(出自“Eating yourown dog food — 吃你自家的狗粮”),它的意思是公司内部员工使用自己生产的产品进行日常工作。这么做有什么好处呢,比方说一家公司做美颜APP的,结果他们自己员工却用某图秀秀P图,这产品对外怎么可能具备说服力?如果坚持使用自家开发的APP,不仅能提升员工开发时的使命感、大众使用此产品的信心,特别地,对于一些Bug的处理也会变得及时——员工发现Bug后会第一时间反馈,而用户很可能就放弃使用了。

关于这点笔者是深有体会,早些年从事软件服务外包时,发现交付给客户的产品鲜有好用的,究其原因,是实现软件的程序员们,未曾站到使用者的角度去思考。技术人员不作为用户,不会明白他们所开发产品的价值。如果不明白其价值,又如何会将其打造得尽善尽美呢?

笔者参与优云Automation产品开发之初,就竭力促成这款产品在优云软件日常工作使用中的落地,正所谓“狗粮吃得多,才能长得肥”!过去我们使用Jenkins等软件进行Automation产品的构建发布,优云Automation的设计目标就是自动化运维的一切,那么能不能将Jenkins所完成的工作用Automation来代替呢?想想应该是非常Easy的事情!

下面分享一下自己在公司吃狗粮的经历,让大家体会下这是一件多么幸福的事情!要成功吃到狗粮,只需要以下几步:

步骤一:定目标

首先设定吃狗粮的目标:使用Automation实现产品自身的自动化构建和发布。然后规划构建发布过程,以便实现自动化。经过分析,整个构建和发布过程大致分为更新代码、程序构建、端到端测试、打包发布四个阶段。

1)更新代码

这个很容易理解,就是将最新的代码从Git远程仓库Pull到本地。

2)程序构建

这个阶段要实现Automation代码的前后端构建,我们使用Webpack和Maven来进行构建管理,所以这个阶段只需执行几行命令便可完成。

3)端到端测试

完成构建后,我们需要进行端到端的测试,验证本次版本的正确性。这里是吃狗粮的重点:使用最新构建出的系统来完成自动化测试,实现真正意义上的“自举”!这样充分保证新版本在一次真实的场景中运行的正确性和稳定性。

整个构建发布过程的前部分使用老版本运行,当构建出新版本后自动更新自身系统,并用新版本运行后续任务,同时通过“端到端测试”对新版本系统进行界面和接口的自动化测试。整个过程只要有任务执行失败,需要生成报告并通知相应人员进行处理。

2.jpg

4)打包发布

优云产品有统一的发布仓库,所以测试通过后需要按公司的要求生成发布包上传到发布仓库,比如某个发布包类似uyun-automation-v2.1.5.tar.gz(此处版本号根据规则自动生成)。

步骤二:写操作

在Automation产品设计中,操作是自动化的原力,支持输入、输出参数设计,所以操作是很容易被复用的。产品本身内置了很多面向各种DevOps场景常用的操作,也可以通过Python、Shell或批处理脚本按需扩展操作能力。

经过第一步的分析得到整个过程可划分为Git Pull、前端构建、后端构建、部署系统、重启系统、端到端测试、生成发布包和上传发布包等操作。其中“端到端测试”操作实际上是调用了另外一个自动化测试的流程编排(概念后面会介绍)来实现。

自定义操作是非常容易的,下面以Git Pull为例说明,其他操作就不细表了,相信难不倒各位看官。

3.jpg

步骤三:编流程

有了自动化的原力之后,就要按我们的目标规划将各个原力串接起来,做出我们的“狗粮”—自动化构建发布流程编排。Automation提供了可视化的编排设计器,支持编排参数设计,任务间支持输入输出参数引用,可设定任务执行完成后是否需要确认才继续执行,所以能很容易编排出实现我们目标的自动化流程。

因整个系统包括前后端,所以复用Git Pull操作实现前后端代码的更新。我们来看看实现上述完整过程的编排长什么样:

4.jpg

“端到端测试”调用的是另外一个编排,该编排主要调用Selenium和Automation自身的API实现界面、接口的自动化测试,这里就不详表了。

步骤四:天天“吃狗粮”

点击保存并测试,“狗粮”做好了,开吃!经过不到10分钟,我们的作业便执行完毕:

5.jpg

构建并发布成功!如果构建失败怎么办?不急,Automation可以生成错误报告并通过邮件或短信通知开发工程师解决后进行下一次自动化构建。根据优云产品管理规定,设定编排每天定时执行,从此便每天过上快乐“吃狗粮”的生活。

自从吃上“狗粮”后,不再失眠了,因为每次构建都会进行自动化场景测试,有问题可以立即发现并修正,产品质量显著提升,单身汪们可以有更多时间解决单身问题,拒绝别人喂的“狗粮”!

其实上面介绍的自动化构建场景,只是Automation强大功能的一小部分,这个产品特别适合各位DevOps达人,不知各位看到这里,有没有联想到更多更棒的使用场景呢?先定他一个小目标,将您的应用构建和发布自动化起来!欢迎试用优云产品Automation。

作者简介:竺夏栋

优云软件产品架构师

4年系统分析师,3年互联网金融相关创业经历

目前负责优云运维自动化产品的架构设计

“优云:全栈双态运维实践者,企业级运维专家”

秉承devops的理念,从监控、到应用体验,到自动化持续交付,优云一切为了您做的更好!

优云全线产品免费试用:https://www.uyun.cn

原创文章,作者:uyunops,如若转载,请注明出处:http://www.178linux.com/65919

(0)
uyunopsuyunops
上一篇 2017-01-09 10:03
下一篇 2017-01-09 10:03

相关推荐

  • 最简单也最难:运维监控的最后1公里

    谈运维我们不得不提监控,监控是运维的起点,也是难点。随着IT架构逐渐复杂化,从前端到IT底层,中间涉及浏览器、网络、服务器、操作系统、中间件、应用、数据库等,每个环节厂商不尽相同。当出现异常需要定位哪个环节出了问题的时候,排查就耗时耗力,若使用优云监控产品,以上难题不再是问题。优云全栈运维监控覆盖了所有环节的监控,真正做到监控无盲区,运维无隐患。 运维最后一…

    系统运维 2017-01-09
  • 初识正则表达式

    正则表达式是个什么东东? 正则表达式,又称正规表示法、常规表示法(英语:Regular Expression,在代码中常简写为regex、regexp或RE)。在很多文本编辑器里、命令中,通常要使用检索、替换、放行和拒绝那些符合某个模式的文本。而正则表达式就是用于描述这些规则的工具。换句话说,正则表达式就是记录文本规则的代码。  摘自《正则表达式之…

    Linux干货 2015-03-27
  • 运维监控大数据的提取与分析

    本文内容整理来自【敏捷运维大讲堂】蒋君伟老师的线上直播分享。分别从以下3个维度来分享:1、云时代监控分析的窘境;2、使用标签标记监控数据的维度;3、监控数据应用场景。 云时代监控分析的窘境 在虚拟化与容器技术广泛应用的情况下,运维对象大规模地增长,监控平台每天存储的指标都以亿计,所以监控数据如今已经成了大数据。传统的监控工具在这种场景下,对于数据的提取分析,…

    系统运维 2017-01-09
  • Http协议中的各种长度限制总结

    HTTP1.0的格式 request(HTTP请求消息)结构:一个请求行.部分消息头,以及实体内容,其中的一些消息内容都是可选择的.消息头和实体内容之间要用空行分开. GET /index.html HTTP/1.1 //请求头,下面都是消息头.Accept: */*Accept-Languang:en-usConnection:keep-aliveHost…

    Linux干货 2015-04-04
  • corosync + pacemaker + iscsi实现高可用mysql (上)

    一、实验图   二、准备实验环境:  1)确保sql服务器之间可以基于主机名通信 [root@SQL1 ~]# vim /etc/hosts 172.16.2.13  SQL1.linux.com  SQL1 172.16.2.14  SQL2.li…

    Linux干货 2015-07-09
  • Lua简明教程

    这几天系统地学习了一下Lua这个脚本语言,Lua脚本是一个很轻量级的脚本,也是号称性能最高的脚本,用在很多需要性能的地方,比如:游戏脚本,nginx,wireshark的脚本,当你把他的源码下下来编译后,你会发现解释器居然不到200k,这是多么地变态啊(/bin/sh都要1M,MacOS平台),而且能和C语言非常好的互动。我很好奇得浏览了一下Lua解释器的源…

    Linux干货 2016-08-15