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

简介:
e78cec951ab8ab626ac56d7138c1e0e123e3a154

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


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


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

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


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

74aff3f9e42533e3f6619605dbcf3d6ac7adb96d

4)  打包发布

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


步骤二:写操作

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


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


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

9745e79b17862492dc3f82214bb64f25d7526b30

步骤三:编流程


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


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

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


步骤四:天天“吃狗粮”

点击保存并测试,“狗粮”做好了,开吃!经过不到10 分钟,我们的作业便执行完毕:
0eea18ad4d2dee219ff5384280d17005f672bb87
构建并发布成功!如果构建失败怎么办?不急,Automation可以生成错误报告并通过邮件或短信通知开发工程师解决后进行下一次自动化构建。根据优云产品管理规定,设定编排每天定时执行,从此便每天过上快乐“吃狗粮”的生活。


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


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

作者简介: 竺夏栋

优云软件产品架构师
4年系统分析师,3年互联网金融相关创业经历
目前负责优云运维自动化产品的架构设计

“优云:全栈双态运维实践者,企业级运维专家
秉承devops的理念,从监控、到应用体验,到自动化持续交付,优云一切为了您做的更好!https://www.uyun.cn
相关文章
|
1天前
2025电气自动化与电机系统国际学术会议(EAMS 2025) 2025 International Conference on Electrical Automation and Motor System
2025电气自动化与电机系统国际学术会议(EAMS 2025) 2025 International Conference on Electrical Automation and Motor System
19 7
|
2天前
|
测试技术 API Android开发
探索软件测试中的自动化框架选择与实践####
本文深入探讨了软件测试领域内,面对众多自动化测试框架时,如何依据项目特性和团队需求做出明智选择,并分享了实践中的有效策略与技巧。不同于传统摘要的概述方式,本文将直接以一段实践指南的形式,简述在选择自动化测试框架时应考虑的核心要素及推荐路径,旨在为读者提供即时可用的参考。 ####
|
1天前
|
测试技术 开发者 Python
自动化测试之美:从零构建你的软件质量防线
【10月更文挑战第34天】在数字化时代的浪潮中,软件成为我们生活和工作不可或缺的一部分。然而,随着软件复杂性的增加,如何保证其质量和稳定性成为开发者面临的一大挑战。自动化测试,作为现代软件开发过程中的关键实践,不仅提高了测试效率,还确保了软件产品的质量。本文将深入浅出地介绍自动化测试的概念、重要性以及实施步骤,带领读者从零基础开始,一步步构建起属于自己的软件质量防线。通过具体实例,我们将探索如何有效地设计和执行自动化测试脚本,最终实现软件开发流程的优化和产品质量的提升。无论你是软件开发新手,还是希望提高项目质量的资深开发者,这篇文章都将为你提供宝贵的指导和启示。
|
4天前
|
运维 负载均衡 Ubuntu
自动化运维的利器:Ansible入门与实践
【10月更文挑战第31天】在当今快速发展的信息技术时代,高效的运维管理成为企业稳定运行的关键。本文将引导读者了解自动化运维工具Ansible的基础概念、安装步骤、基本使用,以及如何通过实际案例掌握其核心功能,从而提升工作效率和系统稳定性。
|
7天前
|
数据管理 程序员 数据处理
利用Python自动化办公:从基础到实践####
本文深入探讨了如何运用Python脚本实现办公自动化,通过具体案例展示了从数据处理、文件管理到邮件发送等常见办公任务的自动化流程。旨在为非程序员提供一份简明扼要的实践指南,帮助他们理解并应用Python在提高工作效率方面的潜力。 ####
|
7天前
|
数据采集 存储 XML
Python实现网络爬虫自动化:从基础到实践
本文将介绍如何使用Python编写网络爬虫,从最基础的请求与解析,到自动化爬取并处理复杂数据。我们将通过实例展示如何抓取网页内容、解析数据、处理图片文件等常用爬虫任务。
|
12天前
|
监控 安全 jenkins
探索软件测试的奥秘:自动化测试框架的搭建与实践
【10月更文挑战第24天】在软件开发的海洋里,测试是确保航行安全的灯塔。本文将带领读者揭开软件测试的神秘面纱,深入探讨如何从零开始搭建一个自动化测试框架,并配以代码示例。我们将一起航行在自动化测试的浪潮之上,体验从理论到实践的转变,最终达到提高测试效率和质量的彼岸。
|
15天前
|
运维 应用服务中间件 持续交付
自动化运维的利器:Ansible入门与实践
【10月更文挑战第21天】在现代IT基础设施的管理中,自动化运维已成为提升效率、降低错误率的关键。Ansible,作为一种简单而强大的自动化工具,正被广泛应用于配置管理、应用部署和任务自动化等领域。本文将引导你了解Ansible的基本概念,通过实际案例展示如何利用Ansible简化日常运维工作,并探讨其在现代IT运维中的应用价值。无论你是新手还是有经验的系统管理员,这篇文章都将为你开启Ansible的高效之旅提供指导。
|
16天前
|
SQL Java 数据库
Spring Boot与Flyway:数据库版本控制的自动化实践
【10月更文挑战第19天】 在软件开发中,数据库的版本控制是一个至关重要的环节,它确保了数据库结构的一致性和项目的顺利迭代。Spring Boot结合Flyway提供了一种自动化的数据库版本控制解决方案,极大地简化了数据库迁移管理。本文将详细介绍如何使用Spring Boot和Flyway实现数据库版本的自动化控制。
16 2
|
7天前
|
NoSQL 测试技术 Go
自动化测试在 Go 开源库中的应用与实践
本文介绍了 Go 语言的自动化测试及其在 `go mongox` 库中的实践。Go 语言通过 `testing` 库和 `go test` 命令提供了简洁高效的测试框架,支持单元测试、集成测试和基准测试。`go mongox` 库通过单元测试和集成测试确保与 MongoDB 交互的正确性和稳定性,使用 Docker Compose 快速搭建测试环境。文章还探讨了表驱动测试、覆盖率检查和 Mock 工具的使用,强调了自动化测试在开源库中的重要性。

热门文章

最新文章

下一篇
无影云桌面