从零开始构建了一个自动化部署系统。下面是整个流程的系统化汇总,可以作为模板参考或复用到其他项目中:

🚀 测试项目 CI/CD 流程(GitLab + Jenkins)

🧱 一、项目准备阶段

✅ GitLab 项目初始化

  • 登录 GitLab → 新建项目 → 命名为 jenkins-test
  • 添加核心文件:

    • index.js:Node.js 服务入口
    • package.json:依赖定义
    • deploy.sh:部署脚本(PM2 启动服务)
    • README.md:项目说明(自动创建)
    • Jenkinsfile: 构建脚本文件

    package.json

    {
      "name": "jenkins-test",
      "version": "1.0.0",
      "scripts": {
        "start": "node index.js"
      },
      "dependencies": {
        "express": "^4.18.2"
      }
    }
    

    index.js

    const express = require('express');
    const app = express();
    const port = 3000;
    
    app.get('/', (req, res) => {
      res.send('Hello from Jenkins Test Project!');
    });
    
    app.listen(port, () => {
      console.log(`App listening at http://localhost:${port}`);
    });
    

    deploy.sh

    #!/bin/bash
    echo "开始部署 Jenkins 测试项目..."
    pm2 stop jenkins-test || true
    npm install
    pm2 start index.js --name jenkins-test
    echo "部署完成!"
    

    Jenkinsfile

    pipeline {
        agent any
    
        tools {
            nodejs 'node24'
        }
    
        stages {
            stage('拉取代码') {
                steps {
                    git credentialsId: 'gitlab-token',
                        url: 'http://10.1.9.27/yj/jenkins-test.git',
                        branch: 'main'
                }
            }
    
            stage('安装依赖') {
                steps {
                    sh 'npm install'
                }
            }
    
            stage('部署') {
                steps {
                    sh 'echo 当前工作目录: $(pwd)'
                    sh 'echo 当前文件列表:'
                    sh 'ls -al'
                    sh 'sed -i "s/\\r$//" deploy.sh'
                    sh 'chmod +x deploy.sh'
                    sh 'bash deploy.sh'
                }
            }
        }
    }
    

    提交这些文件到 GitLab 仓库的 main 分支。

✅二、GitLab 凭据配置

1️⃣ 生成 GitLab Access Token

  1. 登录你的 GitLab 账户
  2. 点击右上角头像 → Edit ProfileAccess Tokens
  3. 创建一个新的 Token:

    • 名称:jenkins-token
    • 过期时间:可选
    • 权限勾选:read_repositoryapi
  4. 复制生成的 Token(只显示一次)

2️⃣ 在 Jenkins 中配置凭据

  1. Jenkins → 系统管理凭据 → 进入你使用的凭据域(通常是 (global)
  2. 添加新凭据:

    • 类型:Username with password
    • 用户名:你的 GitLab 用户名
    • 密码:刚刚生成的 Token
    • ID:例如 gitlab-jenkins-token
    • 描述:GitLab Access Token for Jenkins

✅三、Jenkins 环境配置

  • 安装 Jenkins 并启用中文界面
  • 安装必要插件:

    • NodeJS Plugin
    • Git Plugin
    • GitLab Plugin(如需 Webhook)
  • 配置 NodeJS 工具:

    • 在 Jenkins 中配置 Node.js 工具(推荐方式)

      1. Jenkins → 系统管理 → 全局工具配置
      2. 找到 NodeJS 部分(如果没有,请先安装 NodeJS Plugin 插件)
      3. 添加一个 NodeJS 安装项:

        • 名称:例如 node24
        • 勾选“自动安装”
        • 选择版本(如 NodeJS 24)
      4. 修改 Jenkinsfile,在 安装依赖 阶段前添加: groovy tools { nodejs 'node24' // ← 与你配置的名称一致 }

⚙️四、Jenkins 配置部署流程

创建 Jenkins Pipeline Job

  1. Jenkins → 新建任务 → 类型选择 “Pipeline”
  2. 命名为 jenkins-test-deploy
  3. 在「Pipeline」部分:

    • Definition: Pipeline script from SCM
    • SCM: Git
    • Repository URL: http://10.1.9.27/yj/jenkins-test.git
    • Credentials: 选择 gitlab-token
    • Branch: main
    • Script Path: Jenkinsfile
  4. 应用并保存保存

🧪 五、构建执行过程

✅ 拉取代码阶段

  • 使用凭据成功从 GitLab 拉取 main 分支代码
  • 检出最新提交

✅ 安装依赖阶段

  • 执行 npm install
  • 成功安装所有依赖,无漏洞

✅ 部署阶段

  • 输出当前目录和文件列表,确认 deploy.sh 存在
  • 清理 Windows 换行符(防止解释器识别失败)
  • 设置执行权限
  • 使用 bash deploy.sh 成功执行部署脚本:

    • 停止旧服务(PM2)
    • 安装依赖
    • 启动服务 index.js,命名为 jenkins-test
Copyright © https://yan-jian.com 2023 all right reserved更新时间: 2025-09-28 16:53:14

results matching ""

    No results matching ""