gitlab + php自動部署

Summer-PHP-Deploy

原由

某種緣由, 不能使用Jenkins, 因而用PHP寫了一個自動部署腳本php

項目介紹

  • 用PHP寫的部署腳本
  • 可配置源代碼目錄, 目標目錄, 緩存目錄(用來部署後刪除), 忽略目錄/文件(他們在本地的變化不會被部署)
  • 支持gitlab hook, 可配置版本庫和分支
  • 支持一個push event, 同時往多個目錄部署
  • 支持手動在命令行觸發
  • 支持網頁界面操做

軟件架構

準備

  • 目錄A, 用來存放git分支
  • 目錄B, 運行網站的代碼目錄
  • 目錄C, 部署用的腳本目錄, C裏邊的腳本用來把A裏邊的代碼更新同步到B裏邊
  • gitlab, 添加push hook, hook中指定的url能夠執行C中的代碼

文件說明:

文件名 做用
index_cli.php 入口1: 命令行部署
index_webhook.php 入口2: gitlab push hook觸發的部署
index_webui.php 入口3: 圖形化界面進行部署
Tool.php 工具類, 用來拉取最新代碼, 找出差別, 同步代碼到目標目錄
msg.log 用來存放部署過程當中的輸出或錯誤信息
scripts/ 存放不一樣項目的部署腳本

目錄C中的腳本使用舉例:

  • 若是存在 scripts/dev.php, 該腳本是爲了把develop分支的代碼部署到dev環境, 那麼能夠這樣執行部署命令: php index_cli.php -p=dev
  • 一樣, 若是存在 scripts/pro.php, 該腳本是爲了把master分支的代碼部署到pro環境, 那麼能夠這樣執行部署命令: php index_cli.php -p=pro
  • 若是要部署指定某兩次commit的變化 php index_cli.php -p=dev -v=1234567..7654321

命令參數說明:

  • 命令 "index_cli.php -p=dev" 是指index_cli.php 調用scripts/dev.php 進行部署操做
  • scripts/dev.php裏定義了部署用的路徑配置信息, 本身寫部署腳本時請參考dev.php中的寫法

項目地址

碼雲 Summer-PHP-Deploygit

待開發功能

  • 部署前增量備份
  • 增量回退
  • SQL部署
  • 機器重啓
相關文章
相關標籤/搜索