码云gitee利用PHP脚本拉取实现自动部署

前提:本地git初始化 已完成

服务器环境

*PHP 5.4
*Nginx 1.8.0
*GIT version 2.9.4(#git --version)

一、添加 Web Hooks

我的码云 -> 点击相应项目A -> 管理-> WebHooks 设置 -> 添加;具体填写内容如下图所示

码云gitee利用PHP脚本拉取实现自动部署_第1张图片

 

WebHooks 设置

二、准备PHP脚本(必须保证浏览器可访问)

不多说,直接帖码。修改好自定义选项,上传服务器后到gitee后台点击测试验证是否通过。

 

pull遇到错误:error: Your local changes to the following files would be overwritten by merge:

执行:git reset --hard 即可

 

三、服务器的设置 (重要)

如果没有给777权限,pull时会报各种权限错误(除非你对用户及用户组权限设置的很到位并可以解决站点www用户组权限的冲突),当然也可以将项目A中的.git目录权限都设置为777,如下命令是我当前使用的具体操作。

 

// 为了相对安全,我这里针对需要777权限的目录进行设置
cd 项目A/.git
# cd .git
chmod -R 777 FETCH_HEAD
chmod -R 777 ./objects
chmod -R 777 ./refs
chmod -R 777 ./logs

注意: 是.git目录

因为PHP脚本涉及到shell命令执行所有需要php开启exec命令权限
php.ini:

 

开启exec权限,删除红框中的内容保存后重启php服务即可

四、可以认真写代码了

执行push的会触发WebHooks,同时推送消息给项目A中WebHooks 设置的请求地址,最后完成服务器的git pull。

 

git status
# git pull
git push


至此完成码云gitee自动部署。
 



 

你可能感兴趣的:(Git)