服务器 CI/CD 架构部署:Jenkins+GitLab+Docker 实现代码自动构建与部署
·
Jenkins+GitLab+Docker 实现 CI/CD 架构
环境准备
安装 Jenkins、GitLab 和 Docker,确保三者运行在相同网络或能互相通信。Jenkins 需安装 GitLab 插件和 Docker 相关插件(如 Docker Pipeline、Docker API)。
配置 GitLab 仓库
在 GitLab 项目中启用 Webhook,指向 Jenkins 的触发器 URL。确保仓库中的代码包含必要的配置文件(如 Dockerfile、Jenkinsfile)。
Jenkins 任务设置
创建流水线项目,选择 GitLab 作为源码仓库。在流水线脚本(如 Jenkinsfile)中定义构建阶段:
pipeline {
agent any
stages {
stage('Build') {
steps {
script {
docker.build("my-app:${env.BUILD_ID}")
}
}
}
stage('Test') {
steps {
sh 'docker run my-app:${env.BUILD_ID} npm test'
}
}
stage('Deploy') {
steps {
sh 'docker tag my-app:${env.BUILD_ID} my-registry/my-app:latest'
sh 'docker push my-registry/my-app:latest'
}
}
}
}
Docker 集成
在 Jenkins 中配置 Docker 凭据,允许流水线推送镜像到私有仓库。确保 Dockerfile 正确构建应用镜像。示例 Dockerfile:
FROM node:14
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 3000
CMD ["npm", "start"]
自动化触发
通过 GitLab Webhook 实现代码推送时自动触发 Jenkins 构建。在 Jenkins 中配置 GitLab 触发器,并验证 Webhook 响应状态为 200。
部署验证
流水线最后阶段可加入部署验证,例如通过 SSH 或 Kubernetes 插件将镜像部署到目标环境。添加自动化测试步骤确保部署后服务可用。
日志与监控
集成日志工具(如 ELK)和监控系统(如 Prometheus),实时跟踪构建和部署状态。在 Jenkins 中配置邮件或 Slack 通知,及时反馈结果。
注意事项
- 确保 Jenkins 工作节点有足够资源运行 Docker 容器。
- 敏感信息(如 API 密钥)使用 Jenkins 凭据管理,避免硬编码。
- 定期清理旧镜像(如通过
docker system prune),避免磁盘空间不足。
更多推荐
所有评论(0)