GO 使用Webhook 实现github 自动化部署

摘要:
通常,我们的大部分开发都是本地gitpush提交,gitpull在服务器上手动更新。Git可以使用webhook自动部署。确认githupwebhook连接是否正常:测试webhook是否有效gitpush后,可以看到github推送的信息。例如,在我添加了一个本地推送文件:ExecuteCommit-˃push之后,我们可以看到服务器代码是否自动更新:这里:webhook通信正常。

通常大家开发大部分是本地git push 提交,服务器上git pull 手动更新。git 可以使用webhook实现自动部署。
webhook是仓库平台的一个钩子事件,通过hook 钩子监听代码,回调通知(通知地址就是你在各个git仓库平台中填写的webhook地址,
一般在你的某个项目仓库如myproject.git里面的设置中)仓库平台填写的地址。
其实原理流程就是:GO 使用Webhook 实现github 自动化部署第1张

所以自动部署主要实现方式就是:

- 修改代码 push

- github(其他仓库平台)发送请求给你的网站服务器

- 网站服务器收到更新请求,执行自动部署脚本

- 自动部署脚本执行代码拉取,打包,修改文件等动作完成网站的更新部署

1. 下载github-webhook工具:

wget http://img.sgfoot.com/github-webhook1.4.1.linux-amd64.tar.gz

2. 运行github-webhook 安装

tar -zxvf github-webhook1.4.1.linux-amd64.tar.gz
cp github-webhook /usr/bin/
chmod u+x /usr/bin/github-webhook

3.运行方式

默认端口: 2020,可以更改, http的路由: /web-hook
有效访问地址: http://ip:2020/web-hook
-b 是shell脚本路径参数
-s 是github webhook设置的密码

参数说明:

# 非后台运行
github-webhook -b [shell脚本路径] -s [github webhook设置的密码]

# 后台运行
nohup github-webhook -b [shell脚本路径] -s [github webhook设置的密码] & 

# 定向日志输出
nohup github-webhook -b ~/sh/你的脚本.sh -s hook密码 >> ~/logs/webhook.log 2>&1 &

特性介绍

  • 直接运行二进制文件
  • 自定义脚本路径
  • 自定义密码
  • 自定义端口. 0 ~ 65535
  • 安静模式
GLOBAL OPTIONS:
   --bash value, -b value    Execute the script path. eg: /home/hook.sh
   --port value, -p value    http port (default: 2020)
   --secret value, -s value  github hook secret
   --quiet, -q               quiet operation (default: false)
   --verbose, --vv           print verbose (default: false)
   --help, -h                show help (default: false)
   --version, -v             print the version (default: false)
翻译:
GLOBAL OPTIONS:
   --bash value, -b value    Execute the script path. eg: /home/hook.sh 自定义脚本
   --port value, -p value    http port (default: 2020) 自定义端口,默认6666
   --secret value, -s value  github hook secret 自定义密码, 不允许为空
   --verbose, --vv           print verbose (default: false) 打印更多详细信息
   --quiet, -q               quiet operation (default: false) 安静模式,默认关闭. -q 开启,不输出任何信息
   --help, -h                show help (default: false) 
   --version, -v             print the version (default: false)

上面介绍基本参数使用。好了,言归正传:

部署脚本编写,该 shell 脚本的主要目的是从 github 拉取代码,脚本内容很简单,只做了目录的简要判断,

代码目录存在则更新,不存在则克隆仓库,工作目录和仓库名称、地址请换成大家自己的。

cd ~/  
mkdir sh 
vim webhook.sh

webhook.sh:

#!/bin/bash

cd /www/wwwroot/Golang/src

if [ ! -d "easy-gin" ]; then
  git clone https://github.com/fantasylxh/easy-gin
fi

cd easy-gin
git pull
配置github webhook
  • 填写你服务器的地址, http://ip:2020/web-hook
  • 设置的密码必须与服务器运行github-webhook -s设置的密码一致.

 GO 使用Webhook 实现github 自动化部署第2张

GO 使用Webhook 实现github 自动化部署第3张

 GO 使用Webhook 实现github 自动化部署第4张

启动本地的sh脚本:
github-webhook -b ~/sh/webhook.sh -s webhook123 >> ~/logs/webhook.log 2>&1 &

GO 使用Webhook 实现github 自动化部署第5张 
注意:这的webhook123 是我githup中webhook设置滴密码。

确认githup webhook连接是否正常:
GO 使用Webhook 实现github 自动化部署第6张 测试webhook是否生效

git push后, 就可以看到github推送的信息,比如本地我新增push一个文件:
GO 使用Webhook 实现github 自动化部署第7张

 执行Commit->push 之后,我们再看服务器代码是否自动更新:

GO 使用Webhook 实现github 自动化部署第8张 

到此:webhook 通讯正常。 sh脚本没有验证当前分支,只做了简单的pull,可以带上-f 强制更新,有兴趣的博友可以完善下sh。

欢迎拍砖留言。

免责声明:文章转载自《GO 使用Webhook 实现github 自动化部署》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇MYSQL使用指南DOS下操作ZUI开发人员选项下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

随便看看

WebView2简单试用(二)—— 基本操作

页面跳转可以通过webview实现interface://www.cnblogs.com/tianfang/“);其他操作其他常见操作已经很好地封装在WebView2控件中。网页跳转事件WebView2常见的网页跳转事件包括:更多事件可以参考API文档:快捷键F12。快捷键Ctrl+Shift+I。右键菜单中的“检查”,这为调试提供了极大的便利。...

JS学习笔记(一)JS处理JSON数据

在数据传输过程中,json以文本的形式传输,也就是字符串,而JS则对json对象进行操作。因此,JSON对象和JSON字符串之间的相互转换是关键。如果系统提示您找不到toJSONString()和parseJSON()方法,则说明您的json包版本太低。...

WPF 制作圆角按钮

在程序对应坐置插入以下代码,或是先拖一个按钮控件到窗体中,再替换对应的代码。...

应用程序-特定 权限设置并未向在应用程序容器 不可用 SID (不可用)中运行的地址 LocalHost (使用 LRPC) 中的用户 NT AUTHORITYSYSTEM SID (S-1-5-18)授予针对 CLSID 为 {D63B10C5-BB46-4990-A94F-E40B9D520

此安全权限可以使用组件服务管理工具进行修改。根据APPID为{9CA88EE3-ACB7-47C8-AFC4-AB702511C276}在注册表中找到HKEY_CLASSES_ROOTAppID{9CA88EE3-ACB7-47c8-AFC4-AB702511C276}右键选择权限:加入SYSTEM用户并赋予完全控制权限:如果在注册表中没有权限添加用户,则需...

JVM内存状况查看方法和分析工具

Java本身提供了多种丰富的方法和工具,帮助开发人员查看和分析GC和JVM内存的状态。同时,开源社区和商业社区也有一些工具来查看和分析GC和JVM内存的状态。在内存分析中,JVisualVM的最大优点是可以通过安装VisualGC插件来分析GC趋势和内存消耗细节。使用JMap查看当前JVM中每一代的内存状态、JVM中对象的内存使用情况,并导出整个JVM中的内...

Java SPI

在java.util.ServiceLoader的文档里有比较详细的介绍。简单的总结下javaspi机制的思想。  2.jdbc    jdbc4.0以前,开发人员还需要基于Class.forName的方式来装载驱动,jdbc4也基于spi的机制来发现驱动提供商了,可以通过META-INF/services/java.sql.Driver文件里指定实现类的方...