【运维工具】Git代码发布系统
引言
代码发布系统是互联网公司必备的运维系统,作用主要用户发布业务代码 到 业务服务器
为什么需要代码发布系统
有的同学可能说,我们公司服务器就那么一台,做个发布系统太麻烦了? 不认同这说法
发布系统有如下好处
流程管理,加上权限管理,可以在系统记录 谁 做了 什么 操作
减少人工误操作影响,登录服务器本身操作就是有误操作的可能的
运维自动化 为运维工作减负
加快发布速度 不用人工登录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代码发布系统
标签:git 发布系统 运维 rsync
智能推荐
- 【No.2 Ionic】Android打包
- crontab执行时间和系统时间不一致
- 【重要】号外啦,演示系统发布啦
- 【Java】一台服务器配置多个Tomcat
- 金丝雀发布、滚动发布、蓝绿发布到底有什么差别?关键点是什么?
【运维工具】Git代码发布系统的更多相关文章
- Python自动化运维工具-Fabric部署及使用总结
使用shell命令进行复杂的运维时,代码往往变得复杂难懂,而使用python脚本语言来编写运维程序,就相当于开发普通的应用一样,所以维护和扩展都比较简单,更重要的是python运维工具fabric能自 ...
- linux自动化运维工具Ansible saltstack Puppet、Chef、Fabric之间的对比
发现分布式是一个发展的趋势,无论是大型网站的负载均衡架构还是大数据框架部署,以及云存储计算系统搭建都离不开多台服务器的连续部署和环境搭建. 当我们的基础架构是分散式或者基于云的,并且我们经常需要处理在 ...
- CheungSSH国产自动化运维工具开源Web界面
CheungSSH web2.0 发布文档 CheungSSH 简介 CheungSSH是一款国人自主研发的Linux运维自动化管理服务器软件,秉着为企业降低运营成本,解放管理员双手和自动化生产的理念 ...
- 自动化运维工具之 Ansible 介绍及安装使用
一.初识Ansible 介绍: Absible 使用 模块(Modules)来定义配置任务.模块可以用标准脚本语言(Python,Bash,Ruby,等等)编写,这是一个很好的做法,使每个模块幂等.A ...
- 自动化运维工具SaltStack详细部署
==========================================================================================一.基础介绍==== ...
- 自动化运维工具SaltStack详细部署【转】
==========================================================================================一.基础介绍==== ...
- 轻量级自动化运维工具Fabric的安装与实践
一.背景环境 在运维工作中,经常会遇到重复性的劳动,这个时候为了效率就必须要使用自动化运维工具. 这里我给大家介绍轻量级自动化运维工具Fabric,Fabric是基于Python语言开发的,是开发同事 ...
- Python自动化运维工具fabric的安装
使用shell命令进行复杂的运维时,代码往往变得复杂难懂,而使用python脚本语言来编写运维程序,就相当于开发普通的应用一样,所以维护和扩展都比较简单,更重要的是python运维工具fabric能自 ...
- distri.lua的web运维工具
我的新手游项目很快就要进入到寻找发行商的环节,最近几天相对较空闲,逐将工作重心转移到服务器组运维工具的制作上. 回想一年之前经历的那个不算成功的端游项目,因为运维工具设计得不合理,使用十分不方便,游戏 ...
随机推荐
- stl vector erase
C++ Code 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 ...
- 451. Sort Characters By Frequency
题目: Given a string, sort it in decreasing order based on the frequency of characters. Example 1: Inp ...
- ASP.NET知识总结(2.对比Get和Post提交方式)
2.对比Get和Post提交方式 get:<1>在地址栏中通过?key1=value1&key2=value2...的方式传值 <2>传递的数据用户可以直接在url中看 ...
- resultMap 映射
1. sql的重用:定义一个sql片段,可在任何SQL语句中重用该片段. <sql id="personColumns"> name, sex, updateTime& ...
- CozyRSS开发记录5-订阅列表栏里的项
CozyRSS开发记录5-订阅列表栏里的项 1.订阅列表栏里的项的原型图 这里列表项依然参考傲游的RSS阅读器,以后可能会微调. 2.使用ControlTemplate来定制ListBoxItem 给 ...
- LeetCode——Single Number II(找出数组中只出现一次的数2)
问题: Given an array of integers, every element appears three times except for one. Find that single o ...
- ubuntu14.0.4.3 devstack 安装openstack
参考网址: http://www.chenshake.com/install-ubuntu-14-04-devstack/ 现在装完一切正常,就是不能重启,一旦重启VM,会导致给br-ex设置的IP地 ...
- Windows Server 2008 R2 配置AD(Active Directory)域控制器
实施过程: 一.安装Windows Server2008 R2操作系统 (过程略) 二.安装域控制器 1. 修改电脑名称 2.修改电脑DNS 三.配置AD 1.在"服务器管理器"- ...
- 全站 HTTPS 来了
!版权声明:本文为腾讯Bugly原创文章,转载请注明出处腾讯Bugly特约作者:刘强 最近大家在使用百度.谷歌或淘宝的时候,是不是注意浏览器左上角已经全部出现了一把绿色锁,这把锁表明该网站已经使用了 ...
- 未能加载文件或程序集“System.Data.SQLite”或它的一个依赖。试图加载格式不正确的程序
Go to the IIS7 Application Pool -> advanced settings and set the 32-bit application to true.