git push之后服务器如何自动更新?

在我们开发的过程中,我的开发流程一般都是
说明 本地 -> git push -> 服务器 -> git pull -> npm i -> yarn build
那么我们能不能去监听 git push 呢?
如果我们每次push之后,服务器可以自动的去执行上面的后面的命令岂不是很好

第一种方式

使用 travis-ci.org -> 官网
他的作用就是我们每次push之后,可以帮我们运行一遍,保证代码成功 build status
但是如果travis需要操作服务器的话,那么这个过程就非常麻烦了,需要生成ssh,等等很多,这里面不过多介绍这种

第二种(推荐)

  1. 创建一个仓库
  2. 进入设置
  3. 创建webhooks
  4. 在服务器上创建webhooks.js 写代码
var http = require('http')
var createHandler = require('github-webhook-handler')
var handler = createHandler({ path: '/demo', secret: '123' })
// 上面的 secret 保持和 GitHub 后台设置的一致

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.createServer(function (req, res) {

    handler(req, res, function (err) {
        res.statusCode = 404
        res.end('no such location')
    })
}).listen(6000,() =>{
    console.log('WebHooks Listern at 6000');
})
handler.on('push', function (event) {
  console.log('Received a push event for %s to %s',
    event.payload.repository.name,
    event.payload.ref);
    // 分支判断
  if(event.payload.ref === 'refs/heads/master'){
      console.log('deploy master..')
      run_cmd('sh', ['./deploy.sh'], function(text){ console.log(text) });
  }
})

需要修改的地方

  1. 端口改为创建webooks的端口
  2. 第三行的path要和webhooks后面的路径匹配, secret 也要和创建时匹配
  3. 在下面./depoly.sh是最关键的,也就是每次push执行的命令
  4. 在服务器的这个文件的目录下创建 deploy.sh ,文件内容如下
cd /usr/local/nginx/html/meituan
git pull
npm i
yarn build
  1. 切记服务器要对外开放6000端口才行,并且这个webooks要一直开启,推荐使用pm2开启git push之后服务器如何自动更新?

原文地址:https://www.cnblogs.com/sunhang32/p/12272781.html

时间: 2024-10-10 07:06:13

git push之后服务器如何自动更新?的相关文章

Linux下搭建SVN服务器及自动更新项目文件到web目录(www)的方法

首先搭建SVN服务器 1,安装SVN服务端 直接用apt-get或yum安装subversion即可(当然也可以自己去官方下载安装) sudo apt-get install subversion 2,创建版本库 svnadmin create /home/myrepos    //这里的文件目录自己随便设置 3,配置svnserve 上述版本库/home/myrepos建立后在文件夹下会生成conf文件夹,进入/home/myrepos/conf下面会有下面3个文件 authz passwd 

Linux下搭建SVN服务器及自动更新项目文件到web发布目录(www)

一.linux服务器端配置 [[email protected] ~]# rpm -qa | grep sub subversion-libs-1.7.14-10.el7.x86_64 subversion-1.7.14-10.el7.x86_64 [[email protected] ~]# ps -ef | grep svn root      21019  20613  0 21:57 pts/0    00:00:00 grep --color=auto svn [[email prot

git push remote error解决办法

通常在用git clone了remote端(服务器)的git仓库后,再进行了自己一系列修改后,会将自己测试后稳定的状态push到remote端,以更新源仓库,使 其他人在pull的时候得到自己的修改.但是在git push的时候会经常出现如下的错误提示. remote: error: refusing to update checked out branch: refs/heads/master remote: error: By default, updating the current br

git push简介

本文整理自: http://web.mit.edu/~mkgray/project/silk/root/afs/sipb/project/git/git-doc/git-push.html http://apps.hi.baidu.com/share/detail/11403994 在git中,我们可以通过git push把本地仓库的更新推到服务器仓库. $ git push ssh://[email protected]/rt4ls.git master // 把本地仓库提交到远程仓库的mas

关闭Centos的自动更新

昨天跟老板汇报,提到我们的linux服务器每天自动更新,老板大发雷霆,说生产系统不能够这样,非常不安全,一个师兄也提到他原来在移动的时候,服务器更新也是很谨慎的事情.看来我的思维太技术了,不够全面,所以回来就把自动更新关了. 操作记录如下: [[email protected] alpha]# chkconfig –list yum-updatesd yum-updatesd    0:关闭  1:关闭  2:启用  3:启用  4:启用  5:启用  6:关闭 [[email protecte

git 本地提交后如果让服务器上的GIT 自动更新拉取

Q: 最近配了个服务器,用的GIT,本地提交后服务器必须再拉取一下才能更新出来..求个提交后自动更新的方法 A: 最佳工具 git hook post-update.sample 改名为post-update 然后加几行简单的代码就能实现你的需求了 例: gitdir=/**** cd $gitdir git checkout 对应分支 git pull end... ------------------------------------- 最简单的办法就是服务器上用一个cron任务,定时拉取

通过Git WebHooks+脚本实现自动更新发布代码

需求: 写一个自动化部署脚本,能根据git push动作自动更新发布代码(补丁文件(或更新文件,以下简称补丁)) 解决方案: 通过git webhooks.python脚本.Linux Shell脚本完成,所有动作均自动完成,人工部分仅限于发布补丁文件之前 git webhooks实现触发执行脚本 python脚本用于接收git webhooks的post数据并根据这些数据判断是否执行shell脚本 Linux Shell脚本用于实现部署.备份.回滚等操作 具体步骤(方案实现): 实现原理: 用

GIT自动更新操作说明

一.安装GIT 1.下载GIT源码并安装: $ git --version  #先查看GIT是否已经安装,已经安装则不需要重新安装 $ yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel perl-devel $ wget http://git-core.googlecode.com/files/git-1.9.0.tar.gz   或者  wget https://www.kernel.org/pu

git自动更新网站代码

1.实现过程在linux上安装git服务.创建源版本库.从源版本库克隆得到网站目录,然后利用git中的hooks机制,在git push推送代码到源版本库的时候,触发编写的shell脚本,更新网站目录下的代码. 2.安装git服务 [[email protected] ~]# cd /usr/local/src[[email protected] src]# wget https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.15.2.