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

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

- 修改代码 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 >& &

特性介绍

  • 直接运行二进制文件
  • 自定义脚本路径
  • 自定义密码
  • 自定义端口. 0 ~ 65535
  • 安静模式
GLOBAL OPTIONS:
--bash value, -b value Execute the script path. eg: /home/hook.sh
--port value, -p value http port (default: )
--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: ) 自定义端口,默认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设置的密码一致.

启动本地的sh脚本:

github-webhook -b ~/sh/webhook.sh -s webhook123 >> ~/logs/webhook.log >& &

 
注意:这的webhook123 是我githup中webhook设置滴密码。

确认githup webhook连接是否正常:

测试webhook是否生效

git push后, 就可以看到github推送的信息,比如本地我新增push一个文件:

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

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

欢迎拍砖留言。

GO 使用Webhook 实现github 自动化部署的更多相关文章

  1. GitHub自动化部署(CD) asp.net core 5.0 项目(免费空间)

    这里我简单介绍一下使用Github自动化部署自己项目到Heroku云服务器上,Heroku竟然是一个很非常老牌的云平台服务商,竟然还没听说过,网上一查2010被Salesforce收购,网上有很多关于 ...

  2. 最详细之教你Jenkins+github自动化部署.Net Core程序到Docker

    环境 centos7.9,.NET5 一.Jenkins搭建 1)下载Jenkins的war包 在\home目录建一个jenkins目录放jenkins的包 #进入\home目录 cd \home # ...

  3. 利用 Github 网络钩子实现自动化部署

    GitHub 的网络钩子(webhook)功能,可以很方便的实现自动化部署.本文记录了使用 Node.js 的开发部署过程,当项目的 master 分支被推时,将在服务器进行自动部署 添加网路钩子 在 ...

  4. 使用 GitHub / GitLab 的 Webhooks 进行网站自动化部署

    老早就想写这个话题了,今天正好有机会研究了一下 git 的自动化部署.最终做到的效果就是,每当有新的 commit push 到 master 分支的时候,就自动在测试/生产服务器上进行 git pu ...

  5. gitlab与jenkins的自动化部署(通过webhook与ansilble)

    gitlab与jenkins的自动化部署(通过webhook与ansilble) 1.部署介绍 gitlab服务器:192.168.1.49:80jenkins服务器:192.168.1.49:818 ...

  6. node项目自动化部署--基于Jenkins,Docker,Github(1)安装Jenkins

    前言 每次项目代码更新后都要重新部署,如果只有一台服务器还好. 但是如果是分布式系统,动不动就很多台服务器,所以代码的自动部署就显得十分重要了. 这里用几篇文章来记录一下如何使用Jenkins,Doc ...

  7. 博客 | 基于Travis CI实现Hexo在Github和Coding的同步自动化部署

    文章目录 完成Hexo主题安装和配置 基于Travis CI实现同步部署 参考内容 相关链接 待补充 完成Hexo主题安装和配置 如果您还没有安装Hexo环境,请参考Hexo文档安装,也给出这样两篇博 ...

  8. 编写自己的 GitHub Action,体验自动化部署

    本文将介绍如何使用 GitHub Actions 部署前端静态页面,以及如何自己创建一个 Docker 容器 Action. 简介 Actions GitHub Actions 是 GitHub 官方 ...

  9. 【Hexo】使用Hexo+github pages+travis ci 实现自动化部署

    目录 一.说明 二.成品展示 三.前期准备 本地安装 node.js 本地安装 git github 账号 创建仓库 travis ci 账号 四.安装 Hexo 五.使用 hexo 搭建博客 六.部 ...

随机推荐

  1. mac OS 安装淘宝npm镜像

    淘宝npm镜像官网 https://npm.taobao.org/ 在终端输入 npm install -g cnpm --registry=https://registry.npm.taobao.o ...

  2. react 工程起步 安装chrome 开发调试工具 react developer tools 及初建一个react 项目...

    1.安装react 开发工具 1.下载    chrome      react developer tools 下载地址:https://pan.baidu.com/s/1eSZsXDC  下载好是 ...

  3. CloudCC CRM探讨:精细流程管理与员工悟性培养

    很多企业主招聘时更喜欢专业的销售,来给他们创造价值.老板不愿意花时间在"磨刀上",而喜欢员工一来就"砍柴".即使是建立培训机制,仍然很大程度依赖于员工自己的悟性 ...

  4. P5522 [yLOI2019] 棠梨煎雪

    updata on 2020.3.19 今天把博客从洛谷往博客园搬,图炸了 其实早就发现了,懒得管 那图其实就是一个用dev自带的调试功能调试时,RE了的报错 当时觉得很奇怪看不出是啥,现在再看已经觉 ...

  5. python selenium(键盘事件 Keys 类)

    1.导入Keys类 from selenium.webdriver.common.keys import Keys Keys.BACK_SPACE  删除输入框内结尾的单个字符 Keys.SPACE  ...

  6. python selenium(定位方法)

    一.定位方法 注意:元素属性必须唯一存在 #id定位 find_element_by_id() #name定位 find_element_by_name() #class_name定位 find_el ...

  7. redis系列之3----redis高级应用(主从、事务与锁、持久化)

    文章主目录 安全性设置 主从复制 事务与锁 持久化机制 发布以及订阅消息 上文<详细讲解redis数据结构(内存模型)以及常用命令>介绍了redis的数据类型以及常用命令,本文我们来学习下 ...

  8. schedule定时任务出现问题 (大坑已填)!!

    因为python每次运行完,并不清除内存,nowtime一直不变,这导致了一个致命问题,使我的脚本一直运行失败,具体如下: 我设置的是每隔30分钟登陆一次,代码如下 if __name__ == &q ...

  9. Spring杂谈 | 什么是ObjectFactory?什么是ObjectProvider?

    在Spring的学习过程中,总是学的越多,不懂的越多.本来只是想将ApplicationContext的相关内容全部梳理一遍,结果发现涉及的东西越来越多,比如上篇文章中的ResolvableType, ...

  10. 折腾了一晚上的“equals”和“==”

    最近在仿写美团这个项目的时候,遇到了一点关于字符串比较的问题,这里记录一下,避免以后再犯. 由于之前学c语言的时候,习惯性用“==”进行比较,初识Java,不知道有什么别的方法可以进行字符串比较,于是 ...