设为首页 收藏本站
查看: 865|回复: 0

[经验分享] 【运维工具】Git代码发布系统

[复制链接]

尚未签到

发表于 2018-9-17 08:58:20 | 显示全部楼层 |阅读模式
引言
  代码发布系统是互联网公司必备的运维系统,作用主要用户发布业务代码 到 业务服务器
为什么需要代码发布系统
  有的同学可能说,我们公司服务器就那么一台,做个发布系统太麻烦了? 不认同这说法
  发布系统有如下好处

  •   流程管理,加上权限管理,可以在系统记录 谁 做了 什么 操作
  •   减少人工误操作影响,登录服务器本身操作就是有误操作的可能的
  •   运维自动化  为运维工作减负
  •   加快发布速度  不用人工登录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

  脚本中>  关联配置
'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打包



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-588075-1-1.html 上篇帖子: git 笔记和git 服务器搭建 下篇帖子: Git常用命令大全
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表