开发微信项目的时候很多测试需要在手机进行,也就需要服务器也要每次变动更新代码,一个功能可能需要几十次的
push
和
pull
还是挺麻烦的。
之前试过使用git自身的hook功能,不过尝试了几次都没有成功。
不过今天发现Coding上的项目里有
WebHook
功能,之前使用它和聊天工具结合,有人Push代码就提醒下,这次就尝试在触发事件后推送到服务器,这样就能实现自动部署了。
首先
先在Coding的项目中的
设置
->
WebHook
菜单下使用
新建Hook
新建一个触发。填入自己接收推送的URL即可:
第二步
是在自己的项目中配置路由并在处理逻辑中执行
git pull
命令。
这里我的项目中使用的是
Laravel 5.2
,路由指向处理方法:
Route::post('/gitpush', 'CodingController@doGitPull'); //git push hook
doGitPull中执行shell命令:
/**
* 执行git pull命令
*/
public function doGitPull() {
Log::debug('Git有新的版本');
//执行命令
$out = exec('cd /home/www/your-project-dir && git pull');
Log::debug($out);
}
这里是两个命令的结合,先
cd
到对应目录,然后执行
git pull
命令。
测试,不成功!
这里遇到的问题基本都是权限问题。测试服务器是使用的是nginx,用户为www,而当初
git clone
项目代码的时候使用的是root,并且coding中的
部署公钥
设置也是root生成的,所以在项目中执行的命令权限不足,处理起来也比较简单。
一、生成www对应的密钥