代码拉取完成,页面将自动刷新
同步操作将从 myDcool/Corner-PHP-Deploy 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
<?php
/**
* 适用于gitlab触发的 push hook 部署
*/
//定义部署脚本路径
$deployDir = dirname(__FILE__); //默认部署脚本跟入口文件在同一目录
$scriptDir = $deployDir.'/scripts';
//加载工具类, Tool.php
include_once($deployDir.'/Tool.php');
$tool = new Tool();
$tool->logPath = $deployDir.'/msg.log';
//读取gitlab hook发送的数据
$content = file_get_contents('php://input', 'r');
$tool->filelog($content);
$obj = json_decode($content);
if (empty($obj)) {
$tool->filelog('json数据解析失败!');
}
//只对下边列出的git版本库以及指定分支生效
//格式: '版本库=>分支名' => '部署用的脚本名' (值可以是数组, 这样就可以一次push多目录部署)
$map = array(
//测试用
'git@gitlab.xxx.com:zhangzhibin/test.git=>refs/heads/develop' => 'zhangzhibin-test',
);
//push钩子, 通过gitlab的merge request功能也有push操作
if (!empty($obj->object_kind) && $obj->object_kind == 'push') {
$tool->filelog('push 事件开始: ');
$repoUrl = $obj->repository->url; //版本库地址
$branch = $obj->ref; //分支名
$key = $repoUrl.'=>'.$branch;
$tool->filelog('key: '.$key);
if (array_key_exists($key, $map)) {
$script = $map[$key];
if (is_string($script)) {
$scriptFile = "{$scriptDir}/{$script}.php"; //子部署脚本
include($scriptFile);
$obj = new $script;
$obj->deploy($tool);
} elseif (is_array($script)) {
foreach ($script as $s) {
$scriptFile = "{$scriptDir}/{$s}.php";
include($scriptFile);
$obj = new $s;
$obj->deploy($tool);
}
}
} else {
$tool->filelog("{$key} 不存在.");
}
$tool->filelog('push 事件处理完毕.');
}
$tool->filelog('结束.', TRUE);
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。