Jenkins+GitLab+Docker 实现 CI/CD 架构

环境准备
安装 Jenkins、GitLab 和 Docker,确保三者运行在相同网络或能互相通信。Jenkins 需安装 GitLab 插件和 Docker 相关插件(如 Docker Pipeline、Docker API)。

配置 GitLab 仓库
在 GitLab 项目中启用 Webhook,指向 Jenkins 的触发器 URL。确保仓库中的代码包含必要的配置文件(如 DockerfileJenkinsfile)。

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),避免磁盘空间不足。

更多推荐