littlebot
Published on 2025-04-15 / 0 Visits
0

【源码】基于PHP的GitLab自动部署系统

项目简介

本项目是基于PHP编写的自动部署脚本。由于特定原因无法使用Jenkins,所以开发了此脚本。它支持在网页上操作部署、响应GitLab的push hook(可精确到分支且支持多目录部署),还能在命令行触发部署,同时支持部署后删除缓存以及指定文件不部署。

项目的主要特性和功能

  1. 多种部署触发方式:支持网页操作、GitLab push hook和命令行触发。
  2. 分支精确部署:可精确到具体分支进行部署,且支持同时向多个目录部署。
  3. 缓存处理:部署后可删除缓存。
  4. 文件筛选:支持指定部分文件不进行部署。

安装使用步骤

环境准备

  1. 创建三个目录:目录A用于存放git分支;目录B作为运行网站的代码目录;目录C为部署用的脚本目录,其中的脚本负责将A中的代码更新同步到B。
  2. 在GitLab项目中添加push hook,hook中指定的URL需能执行C中的代码。
  3. 配置域名,使浏览器可访问到index_webui.php
  4. 确保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 pullgit log --merges命令获取。

待开发功能

项目后续计划开发压缩备份、回退以及SQL部署功能。

其他说明

  1. GitLab配置Webhook方法:进入项目后,通过“Settings” => "Integrations"配置Url和Secret Token,Url需为外网地址。
  2. “cp -ar xxx xxx”失败处理:因系统默认“cp”别名为“cp -i”,可通过修改~/.bashrc文件,注释掉alias cp='cp -i',然后执行source ~/.bashrc,修改后需重新登陆。
  3. 调试PHP中exec()方法执行失败问题:在命令后面加上“2>&1”,参数2可使output获取错误信息,如exec("ls -al 2>&1")

下载地址

点击下载 【提取码: 4003】【解压密码: www.makuang.net】