通常大家开发大部分是本地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. WLAN 无线网络 03 - RF 基础

    射频(Radio frequency),又称无线电频率.无线射频.高周波,常被用来当成无线电的同义词,为在3 kHz至300 GHz这个范围内的震荡频率,这个频率相当于无线电波的频率,以及携带着无线电 ...

  2. Android FrameWork学习(二)Android系统源码调试

    通过上一篇 Android FrameWork学习(一)Android 7.0系统源码下载\编译 我们了解了如何进行系统源码的下载和编译工作. 为了更进一步地学习跟研究 Android 系统源码,今天 ...

  3. Ubuntu上安装配置Java环境

    参考文献:在Ubuntu 14.04中安装JDK 方法一: @ 安装 1. 添加PPA repository系统 PPA repository介绍 $sudo add-apt-repository p ...

  4. 图论--网络流--最大流--POJ 1698 Alice's Chance

    Description Alice, a charming girl, have been dreaming of being a movie star for long. Her chances w ...

  5. 图论--最短路--Floyd(含路径输出)

    #include<bits/stdc++.h> using namespace std; #define INF 0x3f3f3f3f #define maxn 1005 int D[ma ...

  6. 设置 Linux 支持中文

    1.首先在 command 输入 locale,可以看到 Linux 下默认的系统语言的是英文 2.vim ~/.bashrc 打开这个文件,该文件夹相当于系统配置文件 3.打开后,将后三行命令输入到 ...

  7. spring学习笔记(二)spring中的事件及多线程

    我们知道,在实际开发中为了解耦,或者提高用户体验,都会采用到异步的方式.这里举个简单的例子,在用户注册的sh时候,一般我们都会要求手机验证码验证,邮箱验证,而这都依赖于第三方.这种情况下,我们一般会通 ...

  8. 13_JavaScript基础入门(3)

    条件分支语句 条件分支语句,也叫作条件判断语句,就是根据某种条件执行某些语句,不执行某些语句. JS中有三种语法是可以表示条件分支的. 1.if--else-- 条件分支的主力语法,这个主力语法能够书 ...

  9. js数据类型很简单,却也不简单

    最近脑子里有冒出"多看点书"的想法,但我个人不是很喜欢翻阅纸质书籍,另一方面也是因为我能抽出来看书的时间比较琐碎,所以就干脆用app看电子书了(如果有比较完整的阅读时间,还是建议看 ...

  10. {bzoj2338 [HNOI2011]数矩形 && NBUT 1453 LeBlanc}平面内找最大矩形

    思路: 枚举3个点,计算第4个点并判断是否存在,复杂度为O(N3logN)或O(N3α) 考虑矩形的对角线,两条对角线可以构成一个矩形,它们的长度和中点必须完全一样,于是将所有线段按长度和中点排序,那 ...