从零开始构建了一个自动化部署系统。下面是整个流程的系统化汇总,可以作为模板参考或复用到其他项目中:
🚀 测试项目 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
- 登录你的 GitLab 账户
- 点击右上角头像 →
Edit Profile
→Access Tokens
创建一个新的 Token:
- 名称:
jenkins-token
- 过期时间:可选
- 权限勾选:
read_repository
和api
- 名称:
- 复制生成的 Token(只显示一次)
2️⃣ 在 Jenkins 中配置凭据
- Jenkins →
系统管理
→凭据
→ 进入你使用的凭据域(通常是(global)
) 添加新凭据:
- 类型:
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 工具(推荐方式)
- Jenkins → 系统管理 → 全局工具配置
- 找到 NodeJS 部分(如果没有,请先安装
NodeJS Plugin
插件) 添加一个 NodeJS 安装项:
- 名称:例如
node24
- 勾选“自动安装”
- 选择版本(如 NodeJS 24)
- 名称:例如
- 修改 Jenkinsfile,在
安装依赖
阶段前添加: groovy tools { nodejs 'node24' // ← 与你配置的名称一致 }
⚙️四、Jenkins 配置部署流程
创建 Jenkins Pipeline Job
- Jenkins → 新建任务 → 类型选择 “Pipeline”
- 命名为
jenkins-test-deploy
在「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
- Definition:
- 应用并保存保存
🧪 五、构建执行过程
✅ 拉取代码阶段
- 使用凭据成功从 GitLab 拉取
main
分支代码 - 检出最新提交
✅ 安装依赖阶段
- 执行
npm install
- 成功安装所有依赖,无漏洞
✅ 部署阶段
- 输出当前目录和文件列表,确认
deploy.sh
存在 - 清理 Windows 换行符(防止解释器识别失败)
- 设置执行权限
使用
bash deploy.sh
成功执行部署脚本:- 停止旧服务(PM2)
- 安装依赖
- 启动服务
index.js
,命名为jenkins-test