九月丶

git webhooks 实现自动拉取代码
在 CentOs + Nginx + 码云的尝试1、首先你要搭建好LNMP的的开发环境 2、当然要有git的环境了...
扫描右侧二维码阅读全文
02
2018/05

git webhooks 实现自动拉取代码

在 CentOs + Nginx + 码云的尝试
1、首先你要搭建好LNMP的的开发环境
2、当然要有git的环境了
3、要将代码方在一个提供webhooks支持的代码托管平台上,如果自己搭建 git 服务器则要自己实现 webhooks 回调

在服务器
开始干活

1.创建web服务器用户目录,这里以nginx用户为例,不同的环境请根据自己环境自行修改:
sudo mkdir /home/www/.ssh
sudo chown -R www:www /home/www/.ssh/  // 这里的用户要是 Nginx 的运行用户,下同

2.生成公钥

公钥有两个:1. git用户公钥,2. 部署公钥:
3.用户公钥(用于git clone时认证权限)

ssh-keygen -t rsa -C "destiny1123@aliyun.com"

然后按三下回车就行
生成的文件通常是 /root/.ssh/id_rsa,如果非root用户请查看提示上的路径

4.部署公钥
sudo cat /var/www/.ssh/id_rsa.pub # 查看生成的密钥内容,复制全部

5.准备钩子文件
在你的www目录建立一个目录hook, 里面放上一个php文件index.php,内容如下:

<?php
// 这里只是最简单的拉取代码,如果要做更加多的操作,如验证、日志,请自己解析push内容并操作

// 获取push数据内容的方法
$requestBody = file_get_contents("php://input");

// 只需这一行代码便可拉取
shell_exec("cd /var/www/Project && git pull"); // 目录换成项目的目录

?>

修改目录权限:

chown -R www:www /www/wwwroot/website/hook # 这里请改成你创建的hook目录
chown -R www:www /www/wwwroot/website # 这里请改成你的项目目录

确保你的hook文件可以访问:http://example.com/hook/index.php
如果访问报错: Warning: shell_exec() has been disabled for security reasons
是因为php默认将shell_exec()函数禁用了,需要在配置文件php.ini中开启,找到 disable_functions = exec , popen, system... 去掉shell_exec()函数即可。

钩子准备完成。
4.修改git配置

git config --global user.name "overtrue"
git config --global user.email "anzhengchao@gmail.com" # 邮箱请与conding上一致

在代码托管网站
1.添加用户公钥
复制/var/www/.ssh/id_rsa.pub的内容并添加到Coding.net公钥:

选择项目 > 设置 > 部署公钥 > 新建 > 粘贴到下面框并确认

2.添加hook
选择项目 > 设置 > WebHook > 新建hook > 粘贴你的hook/index.php所在的网址。比如:http://example.com/hook/index.php, 令牌可选,但是建议写上。
稍过几秒刷新页面查看hook状态,显示为绿色勾就OK了。

初始化
1.我们需要先在服务器上clone一次,以后都可以实现自动部署了:
sudo chown -R www:www /www/wwwroot/website
sudo -Hu www git clone git@gitee.com:sept_me/git-test.git /www/wwwroot/website/ --depth=1

!!注意,这里初始化clone必须要用www用户
2.往Coding.net提交一次代码测试:

git commit -am "add test"
git push

OK,稍微等几秒,正常的话你在代码里配置的目标目录里就会有你的项目文件了。

注意事项
如果配置都没有问题,但是就是不会自动拉取,那应该是用户的权限配置问题,可以先查看运行php代码的具体用户是什么,然后为该用户开启权限。

<?php 
system("whoami"); // 查看是哪个用户执行该命令
最后修改:2018 年 09 月 06 日 10 : 56 AM
如果觉得我的文章对你有用,请随意赞赏

发表评论