git使用Webhook功能上传文件至服务器

每次上传一些静态资源到我的阿里云服务器是都要使用sftp登录,然后上传文件,挺麻烦的,后来了解到github和gitee都有webhook功能,就利用该功能实现了服务器自动拉取静态资源文件的操作。

WebHook 简介

Gitee WebHook 功能是用户 push 代码后,github或者gitee自动回调一个用户设定的 http 地址。

用户可以自己根据不同的需求,来编写自己的脚本程序(比如发邮件,自动部署等)。

在这里我需要设定服务端接收到http请求后自动拉取静态资源的代码仓库,实现静态资源文件的自动部署。

由于github国内访问较慢,在这里主要使用gitee的webhook功能。

通过使用该功能,当我想上传一些静态资源文件到我的阿里云服务器时,只需要将本地的静态资源仓库push到gitee,gitee通过webhook功能回调我的阿里云服务器,然后服务器拉取最新的静态资源仓库文件。这样就不用每次登陆sftp上传文件了。

实现步骤

1、在gitee上建立仓库

首先在gitee上建立的静态资源仓库,然后将本地的静态资源push到gitee上。

2、将服务器的公钥上传到gitee

需要将服务器的公钥上传到gitee上,不然服务器无法拉取gitee的仓库。

服务器公钥的地址在/home/hadoop/.ssh/id_rsa.pub文件下,将该文件的内容上传到gitee即可。

3、服务器安装git

服务器需要安装git,我的服务器的系统是centos,安装命令是yum install git

安装完成git后,使用git clone命令将gitee上的仓库拉取到服务器相应目录下

4、服务器安装webhookit

webhookit是一个极简的命令行版本的 git webhok,部署容易,非常简单就可以部署一个 webhook server。

安装教程在对应的github仓库下,这里不再赘述。

教程中运行webhook服务的命令需要在后台运行,后台运行的命令如下

1
nohup webhookit -c webhook.py > webhook.log 2>&1 &

webhook.py 是我用webhookit_config命令生成的配置文件,具体配置信息可在webhookit的安装教程里查看,默认运行的端口是 18340

运行上述命令后,开启接收webhook请求的服务,这时需要服务器的nginx将webhook的请求转发到该服务下

我的nginx转发配置如下

1
2
3
location /webhook {
proxy_pass http://0.0.0.0:18340/;
}

对于https://dxysun.com/webhook* 的配置都会转发到18340端口

访问 https://dxysun.com/webhook,页面如下

WEBHOOK url https://dxysun.com/webhookwebhookit就是配置在gitee webhook下的地址

/app/code/static.sh 是webhook服务收到请求后执行的shell命令,命令如下

1
2
3
#!/bin/bash
cd /app/static
git pull

/app/static 是服务器上的仓库地址

git pull 是拉取最新代码

5、gitee的对应仓库下配置webhook服务

配置页面如上所示

URL填步骤4中的WEBHOOK url地址,WebHook密码不用填,事件选择push,点击添加。

至此,配置已经全部完成。

进行测试,本地将新加的静态资源文件push到gitee仓库后,服务器会自动拉取仓库的最新代码,这样就实现了服务器自动更新静态资源文件,再也不用很麻烦的登录sftp上传文件了。

总结

Webhook功能很实用,不仅可以用来实现自动更新静态资源文件,还可以实现上传代码后一键部署等功能。步骤与上述的类似,只需要把要执行的脚本改下就行。

打赏

请我喝杯咖啡吧~

支付宝
微信