php网站源文件自动升级 实现,PHP脚本实现gitee代码更新自动同步到线上运行目录并发送钉钉通知...

一、需要设置gitee无需密码可以拉取代码到本地,操作步骤详见:生成/添加SSH公钥

二、设置 Linux免输入密码使用sudo git 命令:

因为我们的PHP执行其实是使用的www用户。这个我们是可以自行设置的。默认都是www用户。

那么PHP中执行git也是使用www用户。让www用户免密码执行git的语句是/etc/sudoers 文件中的

www ALL=NOPASSWD:/usr/bin/git

如果未找到,执行以下命令添加:

sed -i '$a\www ALL=NOPASSWD:/usr/bin/git' /etc/sudoers

sed -i '$a\apache ALL=NOPASSWD:/usr/bin/git' /etc/sudoers  (有的php-fpm默认用户是apache)

三、在钉钉群聊添加自定义webhook机器人,复制webhook地址(第四步用到)

四、在项目的公共访问目录添加脚本, e.g. pull_code.php

//exit("nouse");

//此脚本用于gitee仓库有推送时更新某分支代码到某项目文件夹,并发送钉钉消息通知代码更新完成

$path = "/var/www/somehow";//todo:改为实际项目文件夹

$branch = "dev";//todo:改为实际拉取分支

$webhook = "https://oapi.dingtalk.com/robot/send?access_token=xxxx";//todo:改为第三步中的钉钉webhook

$message = shell_exec("cd ".$path.";sudo git pull origin ".$branch.";2

if (strpos($message,'up-to-date')){

echo "ignore";//不用更新代码

}else{

echo "Ding\r\n";

$data = array ('msgtype' => 'text','text' => array ('content' => $message));

echo request_by_curl($webhook, json_encode($data));

//shell_exec("cd ".$path.";composer install;2

}

function request_by_curl($remote_server, $post_string) {

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, $remote_server);

curl_setopt($ch, CURLOPT_POST, 1);

curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);

curl_setopt($ch, CURLOPT_HTTPHEADER, array ('Content-Type: application/json;charset=utf-8'));

curl_setopt($ch, CURLOPT_POSTFIELDS, $post_string);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

// 线下环境不用开启curl证书验证, 未调通情况可尝试添加该代码

// curl_setopt ($ch, CURLOPT_SSL_VERIFYHOST, 0);

// curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, 0);

$data = curl_exec($ch);

curl_close($ch);

return $data;

}

?>

五、在项目的 WebHooks 设置 添加第四步添加的脚本,一般是 http://你的项目url/pull_code.php

选择事件一般勾选两个:Push 和 Pull Request

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值