如何实现Git Push之后自动部署到服务器?

简介: 如何实现Git Push之后自动部署到服务器?

在平时个人开发的过程中是不是有这样的烦恼:

项目开发完成,Push之后

登录服务器,手动git pull,然后运行部署命令

这真的很烦诶!

那么能不能Git push之后,远端服务器自动 Git pull 然后运行部署命令呢?

答案当然是可以的!

这就要请出我们的秘密武器啦!

分析

先分析一波,自动化部署需要实现以下功能:

  • 监听代码仓库的变动。
  • 当检测到代码更新时,自动拉取最新代码。
  • 运行必要的构建和测试脚本。
  • 将构建产物部署到服务器。

而实现这一切的前提,就是GitHub 提供的WebHook。

WebkHook提供了一种通知web服务器有关仓库变更有关的事件,你可以简单理解为:

git仓库发生了变化,包括但不限于push、pull、fork等等

git官方服务器会发送一个请求到你设置webHook链接

*你根据这个请求对应的事件进行*操作。

动手

第一步:配置Webhooks

直接上手吧,在repo-setting设置webHook,例如:http://your-server-ip:3000/webhook

在你的Git仓库(如GitHub)中,找到Webhooks设置,添加一个新的Webhook。Payload URL设置为你服务器上的一个URL,例如http://your-server-ip:3000/webhook

第二步:创建监听服务

(你也可以使用python、php、golang,anyway)

在服务器上创建一个Node.js应用来监听Webhook的POST请求。创建一个webhook-listener.js文件,并写入以下内容:

const express = require('express');
const bodyParser = require('body-parser');
const cmd = require('node-cmd');

const app = express();
const port = 3000; // Webhook监听端口

app.use(bodyParser.json());

app.post('/webhook', (req, res) => {
  // 这里需要验证Webhook的secret,这个示例中省略了验证步骤
  if (req.headers['x-github-event'] === 'push') {
    cmd.get('git pull', (err, data) => {
      if (err) {
        console.error(err);
        res.status(500).send('Server Error');
        return;
      }
      cmd.get('yarn install', (err, data) => {
        if (err) {
          console.error(err);
          res.status(500).send('Server Error');
          return;
        }
        cmd.get('yarn run build', (err, data) => {
          if (err) {
            console.error(err);
            res.status(500).send('Server Error');
            return;
          }
          cmd.run('serve -s build -l 3003');
          console.log('Deployment completed');
          res.status(200).send('OK');
        });
      });
    });
  } else {
    res.status(200).send('Received');
  }
});

app.listen(port, () => {
  console.log(`Webhook listener running on port ${port}`);
});

运行该脚本:

node webhook-listener.js

这将启动一个监听3000端口的服务,等待GitHub的Webhook通知。

(端口你可以自行指定)

第五步:测试Webhook

推送代码到你的Git仓库,以测试Webhook是否正确触发了自动部署脚本。

如果一切设置正确,你应该能够在服务器上看到自动拉取代码并执行构建和部署的过程。

完结

你,学废了吗?

相关文章
|
1月前
|
网络安全 开发工具 git
解决fatal:remote error:You can’t push to git://github.com/username/*.g
通过上述诊断与修复步骤,绝大多数的推送错误都能得到有效解决,确保您的Git工作流顺畅无阻。
67 1
|
2月前
|
前端开发 开发工具 git
如何清理 docker 磁盘空间+修改 Gitea 服务器的 Webhook 设置+前端一些好学好用的代码规范-git hook+husky + commitlint
如何清理 docker 磁盘空间+修改 Gitea 服务器的 Webhook 设置+前端一些好学好用的代码规范-git hook+husky + commitlint
38 5
|
3月前
|
开发工具 git
GIT:如何合并已commit的信息并进行push操作
通过上述步骤,您可以有效地合并已提交的信息,并保持项目的提交历史整洁。记得在执行这些操作之前备份当前工作状态,以防万一。这样的做法不仅有助于项目维护,也能提升团队协作的效率。
164 4
|
3月前
|
Linux 开发工具 数据安全/隐私保护
搭建 Git 私人服务器完整指南
本文详细介绍了如何从零开始搭建一个私人的 `Git` 服务器。首先,文章解释了 `Git` 的概念及其优势,并阐述了搭建私人 `Git` 服务器的重要性,包括数据隐私、定制化需求及成本效益。接着,文章分步骤指导读者完成服务器的准备工作,包括操作系统、硬件和网络要求。随后,详细介绍了在不同操作系统上安装 `Git` 的方法,并演示了如何创建 `git` 用户、部署仓库以及设置免密登录。此外,还提供了客户端连接远程仓库的具体步骤,包括 Linux 和 Windows 的操作方式。最后,文章探讨了迁移仓库的方法以及搭建 `Git` 服务器的一些进阶选项。
682 0
搭建 Git 私人服务器完整指南
|
3月前
|
开发工具 git
GIT:如何合并已commit的信息并进行push操作
通过上述步骤,您可以有效地合并已提交的信息,并保持项目的提交历史整洁。记得在执行这些操作之前备份当前工作状态,以防万一。这样的做法不仅有助于项目维护,也能提升团队协作的效率。
282 3
|
4月前
|
开发工具 git 开发者
|
4月前
|
开发工具 git iOS开发
服务器配置Huggingface并git clone模型和文件
该博客提供了在服务器上配置Huggingface、安装必要的工具(如git-lfs和huggingface_hub库)、登录Huggingface以及使用git clone命令克隆模型和文件的详细步骤。
391 1
|
6月前
|
Shell 网络安全 开发工具
git实现服务器自动push拉取代码--webhooks
git实现服务器自动push拉取代码--webhooks
579 1
|
5月前
|
JavaScript
vue 打包后自动部署到云服务器——scp2教程
vue 打包后自动部署到云服务器——scp2教程
125 0
|
5天前
|
弹性计算 运维 安全
阿里云轻量应用服务器与ECS的区别及选择指南
轻量应用服务器和云服务器ECS(Elastic Compute Service)是两款颇受欢迎的产品。本文将对这两者进行详细的对比,帮助用户更好地理解它们之间的区别,并根据自身需求做出明智的选择。
下一篇
DataWorks