gitlab + php自动部署

myDCool · · 19 次点击 · · 开始浏览    

Summer-PHP-Deploy

起因

某种原因, 不能使用Jenkins, 于是用PHP写了一个自动部署脚本

项目介绍

  • 用PHP写的部署脚本
  • 可配置源代码目录, 目标目录, 缓存目录(用来部署后删除)
  • 支持gitlab hook, 可配置版本库和分支
  • 支持一个push event, 同时往多个目录部署
  • 支持手动在命令行触发, 适用于最终上线部署

软件架构

准备

  • 目录A, 用来存放git分支
  • 目录B, 运行网站的代码目录
  • 目录C, 部署用的脚本目录, C里边的脚本用来把A里边的代码更新同步到B里边
  • gitlab, 添加push hook, hook中指定的url可以执行C中的代码

目录C中的文件说明:

文件名 作用
index_cli.php 入口1: 命令行部署
index_webhook.php 入口2: gitlab push hook触发的部署
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
  • ....

命令参数说明:

  • 命令 "index_cli.php -p dev" 是指index_cli.php 调用scripts/dev.php 进行部署操作
  • scripts/dev.php里定义了部署用的路径配置信息, 自己写部署脚本时请参考dev.php中的写法

项目地址

码云 Summer-PHP-Deploy

待开发功能

  • 部署前增量备份
  • 增量回退
  • SQL部署
  • 界面操作
  • 机器重启

本文来自:Segmentfault

感谢作者:myDCool

查看原文:gitlab + php自动部署

19 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet