详解git自动化部署WebHook

这篇具有很好参考价值的文章主要介绍了详解git自动化部署WebHook。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言:记录自己使用WebHook实现自动化部署项目
个人博客 已更新该文章— 详解git自动化部署WebHook

WebHook 简介

WebHook 功能是帮助用户 push 代码后,自动回调一个设定的 http 地址。
简单来说 就是 监听 执行git操作后向指定 http 地址 发送一个请求。

同时WebHook是一个通用的解决方案,可以根据不同的需求,来编写自己的脚本程序(例如发邮件,自动部署等)

添加WebHook

gitee

仓库主页-----管理页面-----WebHooks 添加 WebHook

WebHook可以多个 ,根据不同的事件,设置不同的请求地址,达到不同的需求. 具体webhook 钩子数据返回格式

事件 钩子 描述
Push Push Hook 仓库推送代码、推送、删除分支
Tag Tag Hook 新建、删除 tag
Issue Issue Hook 新建任务、删除任务、变更任务状态、更改任务指派人
Pull Request Pull Request Hook 新建、更新、合并、关闭 Pull Request,新建、更新、删除 Pull Request 下标签,关联、取消关联 ssue
评论 Note Hook 评论仓库、任务、Pull Request、 Commit

git webhook,服务部署,git,自动化,github

初始化项目
yarn init 
npm init

git webhook,服务部署,git,自动化,github

使用 yarn或者 npm 安装依赖库
gitee ---- gitee-webhook-handler
github ----github-webhook-handler

// *****新建 index.js 

//引入 node http模块  
var http = require('http') 
//引入 gitee-webhook-handler依赖
var createHandler = require('/webServer/webhooks/node_modules/gitee-webhook-handler')
//path: 地址后面路径 http://127.0.0.1:9000/webhooks   secret:填写 gitee || github 配置的webHook密码
var handler = createHandler({ path: '/webhooks', secret: '*****' })

//引入 child_process  创建一个子进程 函数
function run_cmd(cmd, args, callback) {
  var spawn = require('child_process').spawn;
  var child = spawn(cmd, args);
  var resp = "";

  child.stdout.on('data', function(buffer) { resp += buffer.toString(); });
  child.stdout.on('end', function() { callback (resp) });
  
}
//创建一个 HTTP 代理服务器
http.createServer(function (req, res) {
  // handler  传入 req, res
  handler(req, res, function (err) {
    // 发生错误 error
    res.statusCode = 404
    res.end('no such location')
  })
 
}).listen(9000,function(){
  console.log((new Date()) + 'WebHook启动运行端口:', 9000);
})
//监听push钩子 时触发函数
handler.on('Push Hook', function (event) {
  
    // 执行 sh 文件
    console.log('执行server脚本中----')
    run_cmd('sh', 
        ['./serverHooks.sh',event.payload.repository.name], 
        function(text){ 
            console.log('------走了',text)
        }
    );
    console.log('Received a push event for %s to %s',
    event.payload.repository.name,
    event.payload.ref)
})
//监听Issue 
handler.on('Issue Hook', function (event) {
  console.log('Received an issue event for %s action=%s: #%d %s',
    event.payload.repository.name,
    event.payload.action,
    event.payload.issue.number,
    event.payload.issue.title)
})

//监听发生错误
handler.on('error', function (err) {
  console.error('Error:', err.message)
})
# ******* serverHooks.sh

 #!/bin/bash

 # unset GIT_DIR

echo "开始部署"
cd '/webServer/dl-blog-node-server'

echo "正在拉源代码…"
git config pull.rebase false # 设置策略
git pull origin master
yarn

echo "完成"
github

Settings-----WebHooks Add WebHook

git webhook,服务部署,git,自动化,github

设置方法本质上与gitee 类似 写法上基本一样 ,在监听钩子 的名称不同而已 github—WebHook文档

注意事项

  • 初始化项目

    可以看到我是初始化一个小工程,启动一个服务来控制WebHook的,独立出我的项目。核心代码在index.js上,大家可以在自己的项目封装出核心代码,直接引用。

  • 执行sh脚本

    用户不同可能会出现权限问题,导致无法更改代码。执行某些命令会占用内存,导致卡顿(比如我想执行quasar项目的打包命令 ,我是用宝塔面板 操作访问文件,会导致内存不足,宝塔面板卡住了。大致可能是我的内存不够吧,具体我也不太清除)
    腾讯服务器: CPU: 2核 内存: 2GB — CentOS 8.2.2004 x86_64
    宝塔面板 : 7.9.7

结束:自动化部署 – 简化操作流程 灵活,执行一键部署。Node.js Web 服务器的一个小型处理程序(如果需要,也可以称为“中间件”),它处理从 Gitee/GitHub 接收和验证 Webhook 请求的所有逻辑。文章来源地址https://www.toymoban.com/news/detail-611284.html

到了这里,关于详解git自动化部署WebHook的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 自动化部署实践 (Jenkins+Git+Docker+阿里云k8s)

    项目前期部署都是手动部署,所以相关工具基本都已经安装,主要使用的工具有: 使用Gitlab管理代码 使用Maven打包 使用Docker构建镜像(已经有相关的DockerFile文件) 在阿里云kubernetes上部署。 所以,在这次自动化部署过程中,需要做的是安装Jenkins并完成相关配置,然后通过流

    2024年02月05日
    浏览(73)
  • centos安装Jenkins并拉取git远程仓库的代码进行自动化构建部署

    在linux上安装jenkins的前提条件是已经安装了jdk、maven、git 这里是在centos上直接安装openjdk11 查看是否安装成功 安装好后,看下版本 首先下载maven安装文件,此处我选择的版本是3.6.3,下载地址, 下载后上传到服务器目录/usr/local目录下 修改目录名称为maven3, 所以服务器中maven的

    2024年02月04日
    浏览(44)
  • 版本控制系统git:一文了解git,以及它在生活中的应用,网站维护git代码,图导,自动化部署代码

    目录 1.Git是什么 2.git在生活中的应用 2.1git自动化部署代码 3.网站维护git代码

    2024年02月07日
    浏览(50)
  • 每日自动化提交git

    目前这个功能,有个前提: 这个git代码仓库,是一个人负责,所以不存在冲突问题 我这个仓库地址下载后的本地路径是:D:ProjectsTasks 然后我在另外一个地方新建了一个bat文件: bat文件所在目录为:D:CacheFilesBatsgit_tasks_up.bat bat文件的注释与内容: :: 将目录切换到git仓库所

    2024年02月06日
    浏览(40)
  • 自动化脚本之Git相关

    目录 用来还原指定提交中的所有修改文件的脚本 脚本功能介绍 使用示例 用来导出指定分支和提交范围内的所有修改文件的脚本 脚本功能介绍 使用示例 用来生成所有分支上的所有唯一提交的补丁文件的脚本 脚本功能介绍 使用示例 自己工作用的 git相关自动脚本 这个脚本是

    2024年02月11日
    浏览(33)
  • 使用AWS和Kubernetes进行流程自动化:自动化部署和监控

    作者:禅与计算机程序设计艺术 机器学习、深度学习和自动化技术正在成为信息技术行业的新趋势。2017年以来,越来越多的企业开始采用机器学习技术解决业务上的实际问题。这项技术的应用已经从统计学模型逐渐转向基于数据的分析方法。随着云计算技术的蓬勃发展,越

    2024年02月07日
    浏览(40)
  • Github 自动化部署

    官方地址 点击进入 注册/登录 .githubworkflows 固定不变 develop.yml 文件名自定义 变量解释 secrets 是定义在github中的变量 通过 secerts.变量名 来取值 steps steps 是github action的 create_release 是上一个步骤的 id outputs.upload_url 是上一个步骤的返回结果 仓库地址:https://github.com/yi-

    2024年02月03日
    浏览(51)
  • 前端项目自动化部署

    一、Git仓库管理项目 二、购买云服务器 三、搭建服务器环境(重点) 四、Jenkins进行自动化部署(重点) 提示:本地项目自动化部署流程,如下图 一、Git仓库管理项目 Git的安装和配置在这里就不做说明了 1、首先在Git仓库中创建一个仓库,用来保存本地项目,这里使用Git

    2024年02月15日
    浏览(49)
  • jekins自动化部署

    为什么要用Jenkins?我说下我以前开发的痛点,在一些中小型企业,每次开发一个项目完成后,需要打包部署,可能没有专门的运维人员,只能开发人员去把项目打成一个exe包,可能这个项目已经上线了,需要把服务关,在部署到服务器上,将项目启动起来,这个时候可能某个

    2024年02月05日
    浏览(32)
  • Ansible自动化部署工具

    1、运维工具特点 Ansible 与 Saltstack 均是基于 Python 语言开发,Ansible 只需要在一台普通的服务器上运行即可,不需要在客户端服务器上安装客户端。因为 Ansible 是基于 SSH 远程管理,而Linux服务器大都离不开SSH,所以Ansible不需要为配置工作添加额外的支持。 Ansible 安装使用非常

    2024年02月01日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包