运维技巧:简单4步完成自动化构建发布

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

事实上,现在很多涉足产品开发的互联网公司,都会提到“吃狗粮”这一概念(出自“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)端到端测试

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

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

4)打包发布

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

步骤二:写操作

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

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

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

步骤三:编流程

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

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

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

步骤四:天天“吃狗粮”

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

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

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

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

作者简介:竺夏栋

优云软件产品架构师

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

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

时间: 2024-08-07 09:57:02

运维技巧:简单4步完成自动化构建发布的相关文章

大型运维知识体系与Python高效自动化运维免费沙龙活动

2015-10-17(周六 下午13:30)大型运维架构运维知识体系讲座 2015-10-18(周日下午13:30)Python运维自动化讲座 以上内容全免费,回馈网友!极其难得的饕餮盛宴! ================================ 大型电商平台架构演变及大型运维知识体系免费讲座 2015-10-17(周六 下午13:30) 主题1:大型电商平台架构演变及大型运维体系知识讲解 内容简介: 通过一个电商网站的架构演变来阐述一个相对完整的<大型运维架构知识体系>.该运维体系

Linux主流架构运维工作简单剖析

随着IT运维的不断发展,尤其的Linux的飞速发展,越来越多的企业开始使用Linux操作系统平台,例如CentOS.RedHat.Ubuntu.Fedora等等,成千上亿个网站涌现在当今互联网,互联网已经成为必不可少的工具,那今天我们跟大家一起来分享讨论目前用的最多的Linux下主流网站架构:LVS+KEEPALIVED(heartbeat)+Squid+Nginx/Apache+JAVA/PHP+MySQL/MariaDB等.分享一个简单的拓扑图,供各位同学实验参考 一般网站总体分为四层,依次

Windows 运维技巧

双网隔离技术,实现对企事业单位的内外网的信息安全防护. 视频会议系统分为:软件视频会议系统和硬件视频会议系统.软件视频会议系统是基于服务器+PC架构的视频通信系统,MCU(multi control unit). 视频会议组网模式:一种是IP组网方式,一种是E1专线组网方式 服务器安全防范策略: 关闭不需要的端口,先关闭所有,再打开所需.Netstat –na 关闭不必要的服务 删除默认共享 禁止远程枚举本地账户和共享 开启日志审核功能,定期查看日志文件    打开本地安全策略命令/ secpo

运维测试简单概述

1.运维概述 1.什么是运维 服务器的运行维护 2.名词 1.IDC(互联网数据中心) 服务器租用.机柜租用 2.监控软件 zabbix.nagios.cactti 3.常用Linux操作系统 1.CentOS 2.RedHat 3.Ubuntu 4.虚拟化 5.Web正向代理(客户端知道自己使用的代理IP) 1.用途 1.访问原来无法访问的资源(google) 2.对Web服务器隐藏用户信息 6.nginx反向代理(客户端没有感觉) 1.流程 客户端 -> 反向代理服务器 -> 把请求转发给

linux运维好书推荐:《高性能Linux服务器构建实战Ⅱ》热销中,附实例源码下载

由国内著名技术社区ChinaUnix.51CTO鼎力推荐.华章图书出品.2014年南非蚂蚁(高俊峰)最新技术力作:<高性能Linux服务器构建实战----系统安全.故障排查.自动化运维与集群架构>,已经上架发行,此书是<高性能Linux服务器构建实战---运维监控.性能调优.集群应用>的姊妹篇,仍然沿用了实战.实用.通俗.易懂的写作特点,在内容上更加实战化,从运维的多个方面以近似真实的环境介绍运维工作中的各个方方面面,此书新增加了运维中很容易忽略但是又是非常重要的安全章节,这部分内

Ansible 自动化运维工具简单入门(二)

三.Ansible的使用 1.Ansible命令执行过程及状态 过程: 加载自己的配置文件,默认/etc/ansible/ansible.cfg 加载自己对应的模块文件,如command ping 通过ansible将模块或命令生成对应的临时py文件,并将该文件传输至远程服务器 给文件+x权限 执行并返回结果 删除临时py文件,sleep 10 退出 状态: 绿色:执行成功并且不需要做改变的动作 黄色:执行成功并且对目标主机做变更 红色:执行失败 2.Ansible系列命令 ansible an

运维技巧系列之rebocopy同步备份

RoboCopy,它是一个命令行的目录复制命令,自从Windows NT 4.0 开始就成为windows 资源工具包的一部分,然后在Windows Vista.Windows 7和 Windows Server 2008采用作为标准的功能.Windows 7的此项功能也得到升级--已经可以支持多线程了,这就意味着可以大大提升复制速度.而且该功能可以创建两个文件结构完全的镜像副本而不复制任何不需要的重复文件,同时还允许您保留所有相关文件信息,包括日期和时间戳.安全访问控制列表(ACL))等等.下

【sehll学习】linux运维一个简单shell脚本监控系统内存

学习shell脚本入门后,慢慢要尝试编写一些脚本练练手,在这先简单的学习写个系统内存的监控. 1.首先先要确定一下截取一下需要关注的内存使用值,可使用free 命令来操作 free -m 显示 一般在监控内存是我们都是截取 第三行(-/+ buffers/cache)的值.确定后可以使用管道线和grep命令来获取这个的值. free -m | grep - | awk  '{print $4}' 获取到他的值为  858 当中 grep -  就是匹配一下要选取的内容,不太熟悉的可以学习一下gr

CentOS 6.5自动化运维之基于cobbler服务的自动化安装操作系统详解

一.Cobbler安装 前提:cobbler由epel源提供,故此需要事先配置指向epel的yum源方可进行类似下面的安装过程. # yum install -y epel-release # yum install -y cobbler cobbler-web pykickstart debmirror # service httpd start # service cobblerd start # ss -tuanlp | grep :25151 tcp LISTEN 0 5 127.0.0