利用WebHook实现Github或Coding代码的自动部署

这个问题也是出于自己遇到的不便,平时都是把代码托管到GitHub或者Coding,一方面是为了方便代码管理,再就是能更好的存储代码。

但是最近会遇到这样的一个问题本地代码提交Git之后,还要去服务器执行以下git pull,所以会感到很繁琐。

于是就想利用GitHub或者Coding的WebHook来实现代码自动部署。

简单说下整个流程
- 当你把代码push到git服务器上时,服务器收到请求会像你设置的地址发送一个请求,当服务器收到这个请求之后,进行git pull操作进行代码更新

下面我们就以nginx服务器进行详细演示

首先说下Coding的详细步骤
1.生成公钥

公钥有两个:1. git用户公钥,2. 部署公钥:

git用户公钥
ssh-keygen -t rsa -C "admin@51growup.com"
# 然后一直回车就行
# 生成的文件通常是 /root/.ssh/id_rsa,如果非root用户请查看提示上的路径
部署公钥
sudo -Hu www ssh-keygen -t rsa 
# 请选择 “no passphrase”,一直回车下去 这里以www 用户作为演示
2. 准备钩子文件
创建和修改目录权限:
#创建目录
mkdir /data/wwwroot/default/coding-webhook 
#修改目录权限
chown -R www:www /data/wwwroot/default/coding-webhook
写入钩子文件:
创建文件
sudo -Hu www touch /data/wwwroot/default/coding-webhook/webhook.php
钩子文件内容
<?php
    error_reporting(1);

    $target = '/data/wwwroot/default/test'; // 生产环境web目录

    $token = 'photo';
    $wwwUser = 'www';
    $wwwGroup = 'www';

    $json = json_decode(file_get_contents('php://input'), true);

    if (empty($json['token']) || $json['token'] !== $token) {
        exit('error request');
    }

    $repo = $json['repository']['name'];

    $cmd = "cd $target && git pull";

    echo shell_exec($cmd);

确保你的hook文件可以访问:http://51growup.com/coding-webhook/webhook.php,钩子准备完成。

配置Coding的webhook

1.添加用户公钥

复制/root/.ssh/id_rsa.pub内容到个人设置页的SSH公钥里添加即可(https://coding.net/user/account/setting/keys

2.添加部署公钥

复制/home/www/.ssh/id_rsa.pub的内容并添加到部署公钥:

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

3.添加hook

选择项目 > 设置 > WebHook > 新建hook > 粘贴你的coding-webhook/webhook.php所在的网址。比如:http://51growup.com/coding-webhook/webhook.php, 令牌可选,但是建议写上。

稍过几秒刷新页面查看hook状态,显示为绿色勾就OK了。

初始化

1.我们需要先在服务器上clone一次,以后都可以实现自动部署了:
sudo -Hu www git clone https://coding.net/u/itdream6/p/hiyyh/git /data/wwwroot/default/coding-webhook  --depth=1

这个时候应该会要求你输入一次Coding的帐号和密码,因为上面我们设置了永久保存用户名和密码,所以之后再执行git就不会要求输入用户名和密码了。

!!注意,这里初始化clone必须要用www用户

2.往Coding.net提交一次代码测试:

在本地clone的仓库执行:

git commit -am "test hook" --allow-empty
git push

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

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值