自动化代码发布系统实现

简介:

日常运维问题

 

在我日常运维工作中,代码发布可能是最普遍的一项工作之一,尤其是网页代码的更新,碎片化发布需求非常频繁。在前期开发人员比较少时,还可以由自己来上服务器通过脚本来发布代码。但随着公司项目的增多,更多的开发人员加入到公司,发布代码需求开始增多,这就占用了我大部分时间,经常的被打断其它工作来发布代码,非常地不爽,然后开始想解决方法。

 

尝试解决问题

 

当然,发布代码肯定是运维的职责之一了,但频繁的发布导致运维大部分时间浪费在重复的操作上,非常的不值得。基于此,开始限制代码发布频率,要求把不是很紧急的更新延后到一周中的几个时间点。但实施起来效果不理想,治标不治本,原因是你不能强制把需要立即上线的更改延后。实施这样的定时发布,有可能影响项目的快速迭代。

 

最终解决方案

 

想到这样子下去也不是办法,会造成工作很被动,于是开始着手建立以Web操作方式,结合git,rsync来实现自动代码发布。公司代码管理目前用的是svn,开发人员在发布前也没有打Tag的习惯,所以想到分布式的git来完成版本的管理,rsync当然是用来同步代码到其它服务器了。附上几张代码发布系统的截图:
首页
所有更新
提交代码

 

开源技术使用

 

  • rsync:用来同步代码到服务器;

  • git: 用来标记版本,回滚版本;

  • tornado: python的一个web构架,提供后台服务;

  • angularjs: 前端的一个mvc框架,用来实现浏览器与后端的交互,使得后端不需要关心前端网页的渲染,专注后端逻辑的开发。前端和后端通过json数据来通信;

  • bootstrap: 让运维人员写的网站后台UI也可以很专业。

 

代码发布流程

 

代码自动发布
从流程图可以看到,我们只需要把审核发布的权限交给开发组负责人,运维只需要维护系统的稳定,之后代码发布就不需要运维来参与了。

 

以上是整体的流程,现在来说详细说下具体的逻辑实现:

  • 1、开发人员提交代码更新,主要提交的字段包括“更新理由”,“svn代码路径”;

  • 2、后端收到请求后,把此数据插入到数据库,标记此更新单为“等待预发布环境更新”的状态;

  • 3、后台进程定时查询是否有等待预发布环境更新的更新单,如果有,读取svn路径,执行svn up更新代码操作,并标记此更新单为“预发布环境已更新,等待完成测试”;

  • 4、开发人员或者测试人员通过预发布环境的域名来测试功能是否正常,如果不正常,作代码修改后提交svn,再到web发布后台点击“返回修改”,对svn路径或者不做任何修改再点击“重新提交”,然后更新单又一次回到”等待预发布环境更新“状态。循环3、4步骤,直至预发布环境测试通过为止;

  • 5、在确认测试通过后,开发人员点击”测试通过“,这时更新单进入”等待审核状态“;

  • 6、负责人确认可以发布后,点击”审批“按钮,这时更新单进入”审核通过,等待执行发布操作“的状态。这时,开发人员得到发布代码的授权;

  • 7、开发人员点击”发布代码“按钮,更新单进入”已执行发布,等待系统完成发布“状态;

  • 8、后台进程查询状态为”已执行发布,等待系统完成发布“的更新单,执行git发布命令。git命令大概为,进入预发布代码目录,执行git add .;git commit -m "更新原因";git tag 上一次版本号+1,再进入已发布代码的目录,执行git pull同步预发布代码目录的更改。最后调用rsync命令同步代码到生产环境。

 

下面是回滚流程:

  • 1、进入web代码发布系统,选择已发布的版本,点击“申请回滚”;

  • 2、负责人审核此次回滚;

  • 3、开发人员执行回滚操作;

  • 4、后台查询“等待回滚”的记录,假如回滚的版本号为18,进入已发布代码的目录,执行git checkout -b 18 18;git checkout 18(这两条git命令作用为,以tag 18创建分支号为18的分支,并切换当前分支为18),然后再通过rsync命令来同步代码到生产环境,这样就实现了版本的回滚。

 

最后想说的话

 

最后想说的是,运维工作可以是枯燥的,也可以是有趣的。枯燥是因为没有意识或者懒得把重复的操作通过制定流程来使其自动化,在不断地把各种在运维工作中占用时间比较多的重复操作通过技术来使得自动化时,我们既高效完成了工作,节省了时间,又能提高编程和解决问题的能力,只有这样,我们才能让运维工作变得既有趣又有挑战性。

转载请标明文章来源:《https://www.centos.bz/2014/09/code-auto-deploy-system/



本文转自 msj0905 51CTO博客,原文链接:http://blog.51cto.com/sky66/1615823

相关文章
|
17天前
|
运维 Kubernetes 监控
构建高效自动化运维系统:基于容器技术的策略与实践
【4月更文挑战第19天】随着云计算和微服务架构的兴起,传统的运维模式正逐渐向自动化、智能化转型。本文将探讨如何利用容器技术构建一个高效、可靠的自动化运维系统,涵盖系统设计原则、关键技术选型以及实践经验分享。通过引入容器技术,我们可以实现应用的快速部署、弹性伸缩和故障自愈,从而提高运维效率,降低系统维护成本。
|
2月前
|
数据采集 机器学习/深度学习 算法框架/工具
利用Python实现基于图像识别的自动化数据采集系统
本文介绍了如何利用Python编程语言结合图像识别技术,构建一个自动化的数据采集系统。通过分析图像内容,实现对特定信息的提取和识别,并将其转化为结构化数据,从而实现高效、准确地采集需要的信息。本文将详细讨论系统的设计思路、技术实现以及应用场景。
|
2月前
|
运维 Prometheus 监控
构建高效自动化运维系统的关键策略
【2月更文挑战第30天】随着云计算和微服务架构的兴起,现代IT运维环境变得愈加复杂多变。为保持业务连续性、提高响应速度并降低成本,企业亟需构建一个高效的自动化运维系统。本文将深入探讨自动化运维系统构建过程中的关键策略,包括工具和技术选型、流程优化、监控与告警体系搭建以及持续集成/持续部署(CI/CD)实践,旨在为读者提供一个清晰的构建蓝图和实用的实施建议。
|
7天前
|
运维 监控 安全
构建高效自动化运维系统:策略与实践
【4月更文挑战第29天】 在信息技术日新月异的今天,高效的运维管理已成为企业保持竞争力的关键因素。本文将探讨如何构建一个能够适应快速变化需求的自动化运维系统。通过深入分析自动化工具的选择、配置管理的最佳实践以及持续集成和部署的策略,我们旨在为读者提供一个清晰的框架来优化他们的运维流程。文章的核心在于提出一种结合了最新技术和思维模式的综合解决方案,以实现运维工作的最优化。
|
2月前
|
人工智能 运维 监控
构建高性能微服务架构:现代后端开发的挑战与策略构建高效自动化运维系统的关键策略
【2月更文挑战第30天】 随着企业应用的复杂性增加,传统的单体应用架构已经难以满足快速迭代和高可用性的需求。微服务架构作为解决方案,以其服务的细粒度、独立性和弹性而受到青睐。本文将深入探讨如何构建一个高性能的微服务系统,包括关键的设计原则、常用的技术栈选择以及性能优化的最佳实践。我们将分析微服务在处理分布式事务、数据一致性以及服务发现等方面的挑战,并提出相应的解决策略。通过实例分析和案例研究,我们的目标是为后端开发人员提供一套实用的指南,帮助他们构建出既能快速响应市场变化,又能保持高效率和稳定性的微服务系统。 【2月更文挑战第30天】随着信息技术的飞速发展,企业对于信息系统的稳定性和效率要求
|
6天前
|
运维 Kubernetes 持续交付
构建高效自动化运维系统:基于容器技术的持续集成与持续部署实践
【4月更文挑战第30天】 在快速发展的云计算时代,传统的运维模式已无法满足敏捷开发和快速迭代的需求。本文将介绍如何利用容器技术搭建一套高效自动化运维系统,实现软件的持续集成(CI)与持续部署(CD)。文章首先探讨了现代运维面临的挑战,接着详细阐述了容器技术的核心组件和工作原理,最后通过实际案例展示了如何整合这些组件来构建一个可靠、可扩展的自动化运维平台。
|
6天前
|
运维 监控 安全
构建高效自动化运维系统:策略与实践
【4月更文挑战第30天】 在现代IT基础设施管理中,自动化运维不再是可选项而是必需品。随着复杂性的增加和变更的频繁性,自动化可以提高效率、减少错误并释放人员专注于更有价值的任务。本文将探讨构建一个高效的自动化运维系统的关键环节,包括工具选择、流程设计以及监控和优化策略。通过案例分析和最佳实践分享,读者可以获得实施自动化运维的实用指导和启发。
|
7天前
|
机器学习/深度学习 人工智能 运维
构建高效自动化运维系统的策略与实践
【4月更文挑战第29天】 在数字化转型的浪潮中,企业IT基础设施变得日益复杂多变。传统的手动运维方式已无法满足快速响应和高效率的需求。本文将探讨如何通过一系列策略和技术手段构建一个高效的自动化运维系统。首先,分析当前自动化运维的必要性及其带来的益处;接着,详细阐述自动化运维的核心组件、工具选择以及实施步骤;最后,通过案例分析展示自动化运维在实际环境中的应用效果,并讨论面临的挑战及未来发展趋势。
|
8天前
|
存储 运维 监控
构建高效可靠的自动化运维系统
【4月更文挑战第28天】 随着信息技术的快速发展,企业对于信息系统的管理和维护要求越来越高。传统的手工运维方式已经难以满足现代企业的需求,因此自动化运维成为了一种趋势。本文将介绍构建高效可靠自动化运维系统的方法和技术,包括自动化工具的选择、配置管理、监控告警等方面的内容。通过本文的阅读,读者可以了解到如何利用自动化技术提高运维效率,降低人为错误的发生,从而实现企业的高效稳定运行。
|
11天前
|
运维 Prometheus 监控
构建高效自动化运维系统:策略与实践
【4月更文挑战第24天】 在当今快速发展的信息技术时代,自动化运维已经成为提高企业IT效率、确保系统稳定性和敏捷响应市场变化的关键。本文将探讨构建一个高效自动化运维系统的关键环节,包括基础设施即代码(IaC)的实现、持续集成与持续部署(CI/CD)流程的优化以及监控和日志分析的重要性。通过这些技术的融合,我们旨在提供一个可行的蓝图,以帮助企业实现运维工作的自动化,从而提升整体业务效能。

热门文章

最新文章