优云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)
上一篇 2017-01-09 10:03
下一篇 2017-01-09 13:30

相关推荐

  • dns主从

    一、前言 Dns全称domain name system,当我们访问一个网站时,在网站输入一个网址。但是网络是靠ip地址这个逻辑地址来标识地址的。而一个网址是如何转换为ip地址的?下面我们将简单讲解下dns的原理。 二、dns查询过程 在了解dns查询过程时,我们先了解一些有关dns的专业名词     根域:用来管理互…

    Linux干货 2015-10-01
  • rpm包管理

    一、什么是RPM     RPM全称为“RedHat Package Manager”,看名字就知道这是RedHat公司搞出来的,后来因为RPM发展的很好,逐渐成为了一种通用的标准,就更名为“RPM is Package Manager"。     RPM最大的特点就是…

    Linux干货 2015-05-11
  • 链接分析算法之:主题敏感PageRank

      前面的讨论提到。PageRank忽略了主题相关性,导致结果的相关性和主题性降低,对于不同的用户,甚至有很大的差别。例如,当搜索“苹果”时,一个数码爱好者可能是想要看 iphone 的信息,一个果农可能是想看苹果的价格走势和种植技巧,而一个小朋友可能在找苹果的简笔画。理想情况下,应该为每个用户维护一套专用向量,但面对海量用户这种方法显然不可行。所…

    Linux干货 2016-02-17
  • Linux基于OpenSSL实现私有CA构建

    前言 随着互联网的迅猛发展,网络通信已经成为传递信息的主要途径。而通信时的数据传输大部分却是明文传输的,在网络这个不安全的环境下,如果没有一套数据加密机制,就会导致敏感信息和重要数据泄露,引起不可估量的损失。而OpenSSL正好弥补了这一缺憾,那什么是OpenSSL呢?OpenSSL是一套强大的具有加密功能的组件,它包含libcrypto(公共加密库)、li…

    Linux干货 2015-04-13
  • 常见文件管理命令及bash特性

    cat:查看文件文本内容  -n:显示行号  [root@study ~]# cat -n /etc/passwd  1  root:x:0:0:root:/root:/bin/bash  2  bin:x:1:1:bin:/bin:/sb…

    系统运维 2016-11-06
  • Liunx权限的管理

    一、权限 获取某种资源的能力。对于Liunx而言,一切皆文件。所以,对于Liunx的权限定义,也就是定义文件被不同用户访问能力的过程。 权限分为三种:r、w、x 文件 r:查看文件内容 w:修改文件内容 x:可以将文件启动运行 目录 r:可以使用ls命令查看目录中的文件名 w:可以在目录中创建或删除文件(能否删除文件,取决于用户对目录的写权限 x:可以cd到…

    Linux干货 2015-04-03