项目简介
本项目是基于PHP编写的自动部署脚本。由于特定原因无法使用Jenkins,所以开发了此脚本。它支持在网页上操作部署、响应GitLab的push hook(可精确到分支且支持多目录部署),还能在命令行触发部署,同时支持部署后删除缓存以及指定文件不部署。
项目的主要特性和功能
- 多种部署触发方式:支持网页操作、GitLab push hook和命令行触发。
- 分支精确部署:可精确到具体分支进行部署,且支持同时向多个目录部署。
- 缓存处理:部署后可删除缓存。
- 文件筛选:支持指定部分文件不进行部署。
安装使用步骤
环境准备
- 创建三个目录:目录A用于存放git分支;目录B作为运行网站的代码目录;目录C为部署用的脚本目录,其中的脚本负责将A中的代码更新同步到B。
- 在GitLab项目中添加push hook,hook中指定的URL需能执行C中的代码。
- 配置域名,使浏览器可访问到
index_webui.php
。 - 确保PHP版本在5.4以上。
部署操作
- 网页部署:通过浏览器访问配置好域名的
index_webui.php
,在网页界面操作触发部署。 - GitLab Hook部署:当GitLab有push操作时,根据配置的hook触发
index_webhook.php
进行部署。 - 命令行部署:
- 示例命令:
php index_cli.php -p=dev
,此命令指调用scripts/dev.php
进行部署,将git最新改动同步到目标目录。 - 示例命令:
php index_cli.php -p=dev -v=1234567..89abcde
,该命令指调用scripts/dev.php
,把某分支从1234567到89abcde两次commit之间的变动同步到目标目录(commit_id:1234567提交在前)。-v
后的参数可从git pull
或git log --merges
命令获取。
- 示例命令:
待开发功能
项目后续计划开发压缩备份、回退以及SQL部署功能。
其他说明
- GitLab配置Webhook方法:进入项目后,通过“Settings” => "Integrations"配置Url和Secret Token,Url需为外网地址。
- “cp -ar xxx xxx”失败处理:因系统默认“cp”别名为“cp -i”,可通过修改
~/.bashrc
文件,注释掉alias cp='cp -i'
,然后执行source ~/.bashrc
,修改后需重新登陆。 - 调试PHP中exec()方法执行失败问题:在命令后面加上“2>&1”,参数2可使output获取错误信息,如
exec("ls -al 2>&1")
。
下载地址
点击下载 【提取码: 4003】【解压密码: www.makuang.net】