【運維工具】Git代碼發布系統

引言

代碼發布系統是互聯網公司必備的運維系統,作用主要用戶發布業務代碼 到 業務服務器

為什么需要代碼發布系統

有的同學可能說,我們公司服務器就那么一臺,做個發布系統太麻煩了? 不認同這說法


發布系統有如下好處

  1. 流程管理,加上權限管理,可以在系統記錄 誰 做了 什么 操作

  2. 減少人工誤操作影響,登錄服務器本身操作就是有誤操作的可能的

  3. 運維自動化  為運維工作減負

  4. 加快發布速度  不用人工登錄N臺服務器發布

  5. 方便快速回滾版本


技術選型

git:代碼管理工具  git使用筆記

rsync:同步代碼到指定服務器

Yii2:php mvc 框架

Bootstrap3:前端框架

jquery:js庫

代碼發布系統

流程框架圖

600

  1. Web界面化操作,流程化管理 ,提交發布任務

  2. 定時腳本 獲取發布任務

  3. 制定同步策略 發布代碼

界面化操作,流程化管理

流程化管理在人員比較多的時候優勢特別明顯,人多手雜很容易出問題。所以在代碼發布系統中加入流程化管理也是與時俱進


600


上圖是我畫的一個比較完善的流程圖(以前公司實現過這么復雜的流程),描述如下

  1. 新建開發分支

  2. 本地開發并提交代碼

  3. 發布到測試服務器

  4. 測試人員測試

  5. 測試通過之后等待主管審批上線(測試沒通過重走2-4步驟)

  6. 發布上線

  7. 產品 項目經理驗收

  8. 項目完成


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)



實例展示

600

(圖一)


600

(圖二)


600

(圖三)


600

(圖四)


  • 圖一:展示的是發布任務列表

  • 圖二:展示的是添加發布任務的操作

  • 圖三:展示的發布任務執行過程中所執行的指令

  • 圖四:是對圖三的補充,因為本人博客系統很簡單 沒有遠程(remote)服務器,只更新本地服務器,所以圖四截圖是原來在公司做的系統 發布遠程代碼的輸出,對圖三中的remote對象補充


PS:操作對象 version 是版本號操作,作用有兩個


  1. 為靜態資源加上版本號,瀏覽器會訪問重新請求資源(達到穿透瀏覽器緩存的作用)

  2. 版本回滾


如下圖


600


參考資料

  1. git使用筆記

  2. 【RBAC】打造Web權限控制系統

<蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <文本链> <文本链> <文本链> <文本链> <文本链> <文本链>