gitlab + php自动部署

Summer-PHP-Deploy

起因

某种原因, 不能使用Jenkins, 于是用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-Deploy

待开发功能

  • 部署前增量备份
  • 增量回退
  • SQL部署
  • 机器重启

相关推荐