本地 windows 10 ,托管平台 码云 ,另一个远程仓库环境 Linux
1 首先码云新建仓库
2 windows 本地拉取刚才项目
3 linux拉取刚才新仓库
4 进入码云控制台刚才仓库-管理-WebHooks-添加
5,域名解析,nginx添加二级域名
vim xxx.conf, 修改server_name root wq!保存退出,
然后 service nginx restart 重启nginx
然后 cd /app
mkdir xxx
cd xxx
vim index.php <? phpinfo();
如果输出下图,说明webhooks配置成功
接下来修改index.php内容为
<?php
$json = file_get_contents("php://input");
$data = json_decode($json,true);
if (isset($data['ref']) && $data['total_commits_count']>0) {
$res = PHP_EOL."pull start ---------------------------------------------".PHP_EOL;
$res .= shell_exec("cd /app/xxx && git pull 2<&1 ");
$res_log = '------------------------------------------------------------'.PHP_EOL;
$res_log .= $data['user_name'] . ' 在' . date('Y-m-d H:i:s') . '向' . $data['repository']['name'] . '项目的' . $data['ref'] . '分支push了' . $data['total_commits_count'] . '个commit:'.$data['commits']['message'];
$res_log .= $res.PHP_EOL;
$res_log .= "pull end -----------------------------------------------------".PHP_EOL;
file_put_contents("/home/wwwlogs/webhook/".date('Y-m-d',time()).".txt", $res_log, FILE_APPEND);//写入日志到log文件中
}
wq!保存退出
回到本地新建个1.txt 新增-提交-推送到远程仓库
回到linux /app/git_hook文件夹下 ls, what fuck ? 没东西??
再看一下刚才/app/xxx/index.php 文件内容 最后一行为 写入文件到/home/wwwlogs/webhook/下? 进入/home下 ls 空空如也,原因是没有权限,
好吧 手动新建 mkdir -p /wwwlogs/webhook 建完给权限 chmod -R 777 wwwlogs/
好吧,回到本地新增个2.txt, 提交-推送,再回到/app/git_hook ls 还是空空如也 ,进入/home/wwwlogs/webhook/目录下
看到日志写进去了 cat 日志名称
内容如下
进入 app 目录下 查看 git_hook权限 cd /app&ll 看到是root用户root组
chown -R www:www git_hook/
重新再本地新建3.txt 提交 推送 . 回到Linux 看到已经自动更新成功
附录 nginx 配置
server {
charset utf-8;
client_max_body_size 128M;
listen 80;
server_name xxx.php404.com;
root /app/xxx;
index index.php;
location ~* \.(eot|otf|ttf|woff)$ {
add_header Access-Control-Allow-Origin *;
}
location / {
index index.html index.php;
if ( !-e $request_filename) {
rewrite ^/(.*)$ /index.php/$1 last;
break;
}
#autoindex on;
}
location ~ \.php {
set $script $uri;
set $path_info "";
if ($uri ~ "^(.+\.php)(/.+)") {
set $script $1;
set $path_info $2;
}
include fastcgi_params;
fastcgi_index index.php?IF_REWRITE=1;
fastcgi_pass 127.0.0.1:9000;
fastcgi_param PATH_INFO $path_info;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param SCRIPT_NAME $script;
try_files $uri =404;
}
access_log /var/log/nginx/dubang-access.log mains;
}