🚀 DevOps 实战:Docker + Jenkins 搭建“汇丰级”自动化部署流水线
✅ 为什么写这篇?
在汇丰这样的金融巨头中,应用的上线流程必须安全、稳定、可追溯、自动化。
这背后依赖 DevOps 能力的支撑——开发提交代码后,系统自动完成构建、测试、部署、验证。
本篇将手把手带你用 Docker + Jenkins 搭建一条“银行级”自动化部署流水线,涵盖:
- 构建阶段(Node 应用打包)
- 测试阶段(Lint + 单测)
- 部署阶段(推送 Docker 镜像 + 发布)
📌 场景还原
某业务系统提交新功能后,CI/CD 系统自动拉取代码 → 运行测试 → 构建镜像 → 推送至私有仓库 → 更新容器。
🧰 技术选型
技术 | 用途 |
---|---|
Jenkins | 自动化流水线主控平台 |
Docker | 构建部署容器 |
Git | 源码管理 |
Node.js | 示例业务项目 |
📦 Jenkins 安装(Docker)
docker run -d --name jenkins \
-p 8080:8080 -p 50000:50000 \
-v jenkins_home:/var/jenkins_home \
jenkins/jenkins:lts
启动后访问 http://localhost:8080,进入 Jenkins Web 界面初始化。
🧱 项目结构示例(Node 应用)
my-app/
├── Dockerfile
├── index.js
├── package.json
├── test/
│ └── basic.test.js
├── .eslintrc.js
🧪 实战代码
1️⃣ index.js
const express = require('express');
const app = express();
app.get('/', (_, res) => res.send('Hello HSBC!'));
app.listen(3000, () => console.log('Server running on port 3000'));
2️⃣ Dockerfile
FROM node:18
WORKDIR /app
COPY . .
RUN npm install
CMD ["node", "index.js"]
3️⃣ 测试用例 test/basic.test.js
test('1 + 1 = 2', () => {
expect(1 + 1).toBe(2);
});
🔧 Jenkins Pipeline 脚本(Jenkinsfile)
pipeline {
agent any
stages {
stage('Checkout') {
steps {
git 'https://github.com/your-org/hsbc-app.git'
}
}
stage('Install') {
steps {
sh 'npm install'
}
}
stage('Lint') {
steps {
sh 'npx eslint index.js'
}
}
stage('Test') {
steps {
sh 'npx jest'
}
}
stage('Build Docker Image') {
steps {
sh 'docker build -t hsbc-app:latest .'
}
}
stage('Push to Registry') {
steps {
sh 'docker tag hsbc-app:latest registry.hsbc.com/hsbc-app:latest'
sh 'docker push registry.hsbc.com/hsbc-app:latest'
}
}
stage('Deploy') {
steps {
sh 'docker stop hsbc-app || true'
sh 'docker rm hsbc-app || true'
sh 'docker run -d --name hsbc-app -p 3000:3000 hsbc-app:latest'
}
}
}
}
🖥️ 输出结果
在 Jenkins Web UI 中:
- ✅ 每个阶段绿色通过
- ✅ 服务器上自动部署新版本
- ✅ 控制台输出清晰展示每一步日志
⚠️ 常见错误总结
错误点 | 描述 |
---|---|
❌ Dockerfile 写错路径 | 镜像构建失败 |
❌ npm 依赖未锁版本 | 每次构建行为不一致 |
❌ Jenkins 未配置权限 | 拉取代码、推送镜像失败 |
❌ pipeline 忽略错误 | 错误被吞,导致部署了有问题的版本 |
✅ 建议做法:
- 用
set -e
保证每一步失败就终止 - 加入版本号和 Git commit ID 标识部署来源
- 多环境部署支持(如 test / prod 区分)
🎯 总结
- 本文从零构建了 HSBC 级别的 CI/CD 自动化部署流程
- 使用 Jenkins + Docker 实现从构建、测试到部署的全流程
- 为大银行、互联网金融公司提供标准化 DevOps 模板