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

通常大家开发大部分是本地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 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设置的密码一致.

启动本地的sh脚本:

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

确认githup webhook连接是否正常:

测试webhook是否生效

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

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

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

总结

到此这篇关于GO 使用Webhook 实现github 自动化部署的方法的文章就介绍到这了,更多相关GO 实现github 自动化部署内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 使用Fabric自动化部署Django项目的实现

    文中涉及的示例代码,已同步更新到HelloGitHub-Team 仓库 在上一篇教程中,我们通过手工方式将代码部署到了服务器.整个过程涉及到十几条命令,输了 N 个字符.一旦我们本地的代码有更新,整个过程又得重复来一遍,这将变得非常繁琐. 使用 Fabric 可以在服务器中自动执行命令.因为整个代码部署过程都是相同的,只要我们用 Fabric 写好部署脚本,以后就可以通过运行脚本自动完成部署了. 首先在本地安装 Fabric: $ pipenv install fabric --dev 因为 F

  • Typora+PicGo+GitHub实现md自带图床效果

    1 GitHub创建作为图床的仓库 1.1 在GitHub中创建一个仓库 注意仓库要是public的,不然上传的图片还是无法使用的.如果不知道怎么创建仓库,可以百度一下. 1.2 在GitHub生成一个token 这个token是给PicGo使用的 页面拉到最下有一个绿色的Generate token按钮,按一下就会生成token. 将生成的token复制下来,给PicGo使用. 注意:生成的token最好保存到本地,因为下次再进GitHub的时候,这个token就不再显示了. 2 PicGo客

  • GO 使用Webhook 实现github 自动化部署的方法

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

  • Python基于Webhook实现github自动化部署

    一. 分析需求 1. 需求说明 在项目开发过程中,我们有时会频繁的更新代码, 流程大概为: (1) 本地git push提交代码至git托管平台 (2) 登陆到部署有网站源码的线上服务器 (3) cd到项目根目录, 执行git pull 指令拉取最新代码 整个流程纯手动更新,每次耗时在1分钟左右, 这样一天下来,浪费了很多时间在这些琐碎的事情上. 现在的需求是,在每次本地提交代码后,线上服务器自动拉取最新代码,完成部署更新.即所谓的自动化部署. 2. 方案 现在一些主流代码托管平台如github

  • Maven+Tomcat8 实现自动化部署的方法

    本文介绍了Maven+Tomcat8 实现自动化部署的方法,分享给大家,具体如下: 1.配置tomcat-users.xml 首先在Tomcat里配置deploy的用户(tomcat根目录/conf/tomcat-users.xml): <role rolename="tomcat"/> <role rolename="manager"/> <role rolename="manager-gui"/> <

  • Node 自动化部署的方法

    当我们在更新迭代 Node 项目的时候,我们需要做以下几步: git push 将代码提交至代码仓库 在服务器中执行 git pull 拉取最新代码 pm2 start 运行你的代码 这样做固然没错,但是一旦项目更新迭代过快,就需要不断的重复着上面的步骤,在各种 bash 面板中来回切换,很是麻烦. 这时候,Webhooks 闪亮登场! 对于 Webhooks, Github 给出的解释是: Webhooks allow you to build or set up integrations w

  • 基于Docker+Jenkins实现自动化部署的方法

    使用码云搭建Git代码存储仓库 https://gitee.com/login 使用码云创建私有私有git仓库 将本地springboot项目上传到git仓库中 基于Docker安装Jenkins环境 1.使用docker 安装jenkins docker run -p 8080:8080 -p 50000:50000 -v jenkins_data:/var/jenkins_home jenkinsci/blueocean 2.访问jenkins地址 8080 注意:第一次启动的时候正在加载j

  • 帮你快速上手Jenkins并实现自动化部署

    一.下载与安装 Jenkins的下载可以直接在官网下载,方式还是比较简单的,官网提供了具体的下载和安装的步骤. sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key # 安装 yum install jenkins -y # 启

  • Jenkins自动化部署Vue项目的方法实现

    目录 jenkins介绍 1. 环境准备 2. 首先登录服务器更新系统软件 3. 安装Java和git 4. 安装nginx 5. 安装Jenkins 6. 用jenkins创建一个构建任务 7. 填写jenkins构建时执行的shell脚本 8. 安装nodeJs 9.打开服务器 10.利用docker部署nginx访问项目 11.实现代码提交自动触发Jenkins构建 jenkins介绍 Jenkins是开源的,使用Java编写的持续集成的工具,在Centos上可以通过yum命令行直接安装.

  • 使用GitHub和Python实现持续部署的方法

    借助 GitHub 的网络钩子webhook,开发者可以创建很多有用的服务.从触发一个 Jenkins 实例上的 CI(持续集成) 任务到配置云中的机器,几乎有着无限的可能性.这篇教程将展示如何使用 Python 和 Flask 框架来搭建一个简单的持续部署(CD)服务. 在这个例子中的持续部署服务是一个简单的 Flask 应用,其带有接受 GitHub 的网络钩子webhook请求的 REST 端点endpoint.在验证每个请求都来自正确的 GitHub 仓库后,服务器将拉取pull更改到仓

  • 如何自动化部署项目?折腾服务器之旅~

    本篇文章讲的不是如何把一个项目部署上线,而是如何自动化上线. 开发了一个需求管理和发布系统. 通过这个系统,可以创建需求.创建发布计划.创建分支.部署到测试环境.部署到生产环境.正式上线.合并代码等. 一.功能设计 9.9元的阿里云服务器真的很慢,但还是足够折腾完这个项目. 用3个目录来模拟不同的环境. 目录 存放 project 存放所有的项目,比如本系统的前后端代码. pre-dir 预发环境,当然是用来测试的. pro-dir 生产环境,测试没问题,部署上线. 一图胜千言. 二.系统页面

随机推荐