返回

用 GitLab CI/CD 轻松实现 GitLab Webhook 部署 Node.js 项目

前端

在现代软件开发中,自动化部署是必不可少的,它可以显著提高生产效率和可靠性。对于 Node.js 项目,利用 GitLab CI/CD 的强大功能,我们可以轻松设置自动部署,从而简化开发流程。本文将详细介绍使用 GitLab Webhook 实现 GitLab CI/CD 自动部署 Node.js 项目的步骤。

步骤 1:在项目中新建一个 Webhook

在 GitLab 项目中,导航到 "Settings" > "Webhooks",然后单击 "Add Webhook" 按钮。在 "URL" 字段中,输入您将在下一步创建的 Webhook.js 脚本的 URL。其他设置可以保持默认值。单击 "Save" 按钮完成 Webhook 创建。

步骤 2:创建 Webhook.js

在项目中创建一个名为 "webhook.js" 的文件。此脚本将接收来自 GitLab 的 webhook 请求并触发部署流程。添加以下代码:

const express = require('express');
const { exec } = require('child_process');

const app = express();

app.post('/', (req, res) => {
  // 获取 webhook 请求的正文
  const body = req.body;

  // 验证 webhook 请求是否来自 GitLab
  if (body.object_kind !== 'push') {
    res.sendStatus(400);
    return;
  }

  // 触发部署脚本
  exec('sh deploy.sh', (err, stdout, stderr) => {
    if (err) {
      res.sendStatus(500);
    } else {
      res.sendStatus(200);
    }
  });
});

const port = process.env.PORT || 3000;
app.listen(port, () => {
  console.log(`Webhook listening on port ${port}`);
});

步骤 3:编写要执行的 SH 脚本

创建一个名为 "deploy.sh" 的可执行 shell 脚本,其中包含您要执行的部署步骤。这可以包括安装依赖项、构建项目或部署到生产服务器的命令。例如:

#!/bin/bash

# 安装依赖项
npm install

# 构建项目
npm run build

# 部署到生产服务器
scp -r build/* user@server:/var/www/my-app

确保将 "user" 和 "/var/www/my-app" 替换为您的实际用户名和部署目标。

步骤 4:使用 PM2 启动 Webhook.js

PM2 是一个 Node.js 进程管理器,它可以帮助我们保持 Webhook.js 脚本始终运行。安装 PM2:

npm install pm2 -g

然后使用以下命令启动 Webhook.js 脚本:

pm2 start webhook.js

步骤 5:测试

向您的 GitLab 项目推送一些代码更改,以触发 Webhook 请求。如果一切正常,部署脚本应该自动执行,将您的更改部署到生产服务器上。

结论

通过遵循本文中概述的步骤,您可以轻松设置 GitLab CI/CD 自动部署 Node.js 项目的自动化流程。这将显着提高您的生产效率,并为您提供对部署过程的更多控制。拥抱自动化,让您的软件开发流程更高效、更可靠。