【运维工具】Git代码发布系统
2016-11-21 23:00
323 查看
引言
代码发布系统是互联网公司必备的运维系统,作用主要用户发布业务代码 到 业务服务器为什么需要代码发布系统
有的同学可能说,我们公司服务器就那么一台,做个发布系统太麻烦了? 不认同这说法发布系统有如下好处
流程管理,加上权限管理,可以在系统记录 谁 做了 什么 操作
减少人工误操作影响,登录服务器本身操作就是有误操作的可能的
运维自动化 为运维工作减负
加快发布速度 不用人工登录N台服务器发布
方便快速回滚版本
技术选型
git:代码管理工具 git使用笔记rsync:同步代码到指定服务器
Yii2:php mvc 框架
Bootstrap3:前端框架
jquery:js库
代码发布系统
流程框架图
Web界面化操作,流程化管理 ,提交发布任务
定时脚本 获取发布任务
制定同步策略 发布代码
界面化操作,流程化管理
流程化管理在人员比较多的时候优势特别明显,人多手杂很容易出问题。所以在代码发布系统中加入流程化管理也是与时俱进上图是我画的一个比较完善的流程图(以前公司实现过这么复杂的流程),描述如下
新建开发分支
本地开发并提交代码
发布到测试服务器
测试人员测试
测试通过之后等待主管审批上线(测试没通过重走2-4步骤)
发布上线
产品 项目经理验收
项目完成
PS:其中 1、3、6 是业务逻辑(需要脚本帮助的), 其他都是流程控制
定时脚本 获取发布任务
通过流程控制将 发布上线 的任务 推送 队列中去了,就需要有消费队列任务的脚本,关于定时脚本我没有选择使用crontab,因为crontab最低也是从分钟开始 不满足业务需求,建议写一个常驻内存的shell,如下 每2秒运行一次#!/bin/sh cmd='php yii release/index' while true do if [ $(ps -ef |grep '$cmd' |grep -v grep|wc -l) -eq 0 ];then eval $cmd sleep 3; else echo 'queue is Running'; fi done
脚本中 release/index 源码地址:https://github.com/apanly/dream/blob/master/console/controllers/ReleaseController.php
关联配置
'ops_repo' => [ "dream_blog" => [ 'title' => '博客', 'feature' => [ 'path' => '/home/www/yii_tools/tools' ], 'remote' => [ 'hosts' => [ ], 'path' => '/home/www/yii_tools/dream', 'ssh_param' => ' -i /home/www/.ssh/publish_rsa www@' ], 'version' => [ '/tmp/release_version/version_blog' ] ] ]
制定同步策略 发布代码
关于同步策略 我实践过几种,根据不同的情况 使用不同的策略,以下仅是个人经验单独业务服务器多余10台 少于20台 建议使用 rsync 推送 到 目标服务器(此时如果直接在目标服务器上git 操作 很慢,并且源服务器load有点高)
单独业务服务器少于10台 建议直接 在 目标服务器 执行git命令 (当然也可以rsync)
实例展示
(图一)
(图二)
(图三)
(图四)
图一:展示的是发布任务列表
图二:展示的是添加发布任务的操作
图三:展示的发布任务执行过程中所执行的指令
图四:是对图三的补充,因为本人博客系统很简单 没有远程(remote)服务器,只更新本地服务器,所以图四截图是原来在公司做的系统 发布远程代码的输出,对图三中的remote对象补充
PS:操作对象 version 是版本号操作,作用有两个
为静态资源加上版本号,浏览器会访问重新请求资源(达到穿透浏览器缓存的作用)
版本回滚
如下图
参考资料
git使用笔记【RBAC】打造Web权限控制系统
原文地址:【运维工具】Git代码发布系统
标签:git 发布系统 运维 rsync
智能推荐
【Git 使用笔记】第三部分:多分支开发【年度】太俗也只能说谢谢
【年度】2015迷茫之心
【运维工具】logrotate 日志管理神器
【No.2 Ionic】Android打包
相关文章推荐
- 【运维工具】Git代码发布系统
- 【运维工具】Git代码发布系统
- 【运维工具】Git代码发布系统
- 手游公司运维之利用Rundeck自动化运维工具和Shell脚本构建测试环境代码发布平台和生产环境代码发布平台
- Git代码发布系统
- 贝壳一键还原2.0 Windows版本发布+采用磁盘快照技术+支持系统热备份+启动器安装工具+支持安装热键+恢复误删除文件工具
- 陈灯可重用代码段管理器桌面版2.5发布(个人代码库,代码收集器,代码收集工具)+ 陈灯保存的代码段超200条
- 罗列所有系统颜色的小工具及代码
- 系统代码生成工具源码
- 代码生成工具CodeRobot 1.5版发布
- 【转】Eclipse Code Recommenders正式发布 智能代码建议工具
- 一些功能不错的开源工具(DNSPod、MailServer、Bug跟踪系统、VS代码检查、VS反翻译)
- 简易数据库代码生成工具 V1.0 发布
- Python:实用抓图工具开发介绍(含需求分析、设计、编码、单元测试、打包、系统测试、发布各环节)
- 新闻发布系统中的代码记录2
- 【2012年给力作品】通用U盘装系统制作工具 V2.0 万能版 火热发布中……
- [新闻发布系统]新手最爱的信息管理系统代码,为了应付老师写的代码之一
- 介绍一个代码管理系统-Git
- 发布Oracle存储过程包c#代码生成工具(CodeRobot)
- Unicode XMan 1.0 正式版发布,Unicode代码及标准字符表工具