基于Jenkins、Docker、Nginx的CI/CD平台自动化构建发布项目实践指南

基于Jenkins、Docker、Nginx的CI/CD平台自动化构建发布项目实践指南

1. 引言

CI/CD的核心价值

  • 持续集成(CI):频繁合并代码到主干,通过自动化构建和测试快速发现错误。
  • 持续部署(CD):自动化将已验证代码发布到生产环境,缩短交付周期。
  • 自动化价值:减少人为错误,提升发布频率(如从月级到日级),支持敏捷开发和DevOps实践。

Jenkins的核心优势

  • 开源灵活:免费且社区支持强大。
  • 插件生态:超1,500个插件支持各类工具链(如Git、Docker、Kubernetes)。
  • 适用性:兼容Web应用、微服务架构及容器化部署场景。

目标:从零搭建Jenkins平台,实现代码提交→构建→测试→部署的全流程自动化。


2. 准备工作与环境搭建
系统要求
  • 硬件:至少4GB内存,50GB磁盘。
  • 软件
    • Java环境
    • Docker环境
    • Maven环境
    • Node环境
Java安装
# 步骤1:下载安装(Ubuntu),最新版的jenkins只支持java 17  21
sudo apt update
sudo apt install openjdk-17-jdk
# 步骤2:查看是否安装成功
java -version
Jenkins安装

添加Jenkins仓库
导入Jenkins GPG密钥并添加官方仓库:

curl -fsSL https://pkg.jenkins.io/debian-stable/jenkins.io.key | sudo tee \
  /usr/share/keyrings/jenkins-keyring.asc > /dev/null
echo "deb [signed-by=/usr/share/keyrings/jenkins-keyring.asc]" \
  https://pkg.jenkins.io/debian-stable binary/ | sudo tee \
  /etc/apt/sources.list.d/jenkins.list > /dev/null
安装Jenkins

更新包列表并安装Jenkins:

sudo apt update
sudo apt install jenkins
启动Jenkins服务

启动Jenkins并设置开机自启:

sudo systemctl start jenkins
sudo systemctl enable jenkins

检查服务状态:

sudo systemctl status jenkins
配置防火墙

如果启用了UFW防火墙,需放行8080端口:

sudo ufw allow 8080
sudo ufw enable
访问Jenkins

打开浏览器访问 http://<服务器IP或域名>:8080
首次登录需输入初始管理员密码,可通过以下命令获取:

sudo cat /var/lib/jenkins/secrets/initialAdminPassword
完成初始化

按照界面指引安装推荐插件并创建管理员账户,即可开始使用Jenkins。

1.下载推荐插件在这里插入图片描述2. 创建管理员
在这里插入图片描述
3.刚进入到页面内容是英文的,需要重启一下jenkins,插件和页面才会正常,勾选安装完成后重启Jenkins(空闲时),等会就重启。在这里插入图片描述

常见问题
  • 启动:若8080端口被占用,可修改 /etc/default/jenkins 中的 HTTP_PORT
  • 插件安装失败:检查网络连接或更换插件镜像源。

必要插件安装

  • 核心插件:Git、Pipeline、Docker
  • 安装路径:Manage Jenkins > Plugins > Available 搜索安装

3. Jenkins基础配置

系统设置优化

  • 全局安全:启用Role-based Authorization Strategy,按角色分配权限(如开发人员仅限构建操作)。

凭证管理

  1. Git凭证
    • 类型:SSH密钥(推荐)或用户名/密码

在这里插入图片描述
点击System
在这里插入图片描述
点击全局凭证,配置两个凭证,一个是token配置,一个是账号密码配置(多分支项目只有这权限认证)
在这里插入图片描述
构建环境配置

  • Maven安装与配置
    • 安装
    sudo apt update
    sudo apt install maven
    
    • 验证是否成功
    mvn -v
    
    • 查看安装位置
    whereis maven
    
    在这里插入图片描述
    • 最新版的jenkins已经不用配置
  • Node安装与配置
    • 安装
    sudo apt update
    sudo apt install nodejs npm
    
    • 验证安装是否成功
    node -v
    npm -v
    
    • 最新版的jenkins已经不用配置
  • gitHub集成
    • 在jenkins的系统管理配置github访问权限 在这里插入图片描述
    • 复制链接配置在github项目WebHooks在这里插入图片描述
    • 找到需要配置的项目点击settings在这里插入图片描述
    • 点击WebHooks将链接复制在payload URL,其他按图片填写在这里插入图片描述 - 集成后可以根据推送自动进行构建发布, 部署结果更新github上。

4. 创建自动化构建管道

定义Pipeline作业

  • 选择Pipeline类型:推荐使用多分支流水线(可版本控制Jenkinsfile)。
    在这里插入图片描述

  • 进入配置页面找到分支源,点击增加源选择github配置项目链接,github访问权限,添加根据名称过滤导入指定分支。在这里插入图片描述在这里插入图片描述

  • 保存后jenkins就会扫描仓库,如果没扫描到可以在项目跟目录添加Jenkinsfile配置在这里插入图片描述- 根据名称过滤会为我们生成多分支流水线在这里插入图片描述


5. 自动化测试与质量保障

测试阶段集成

  • 单元测试:Maven中配置JUnit,生成XML报告(mvn test)。
  • UI测试:集成Selenium,通过Docker运行浏览器容器。

代码质量检查

  1. 集成SonarQube:
    stage('SonarQube Analysis') {
       steps {
         withSonarQubeEnv('SonarQube-Server') {
           sh 'mvn sonar:sonar'
         }
       }
    }
    
  2. 报告可视化:安装SonarQube Plugin,在Jenkins面板展示覆盖率。

测试环境部署

  • 使用Docker插件自动部署到测试环境:
    sh 'docker build -t my-app:test .'
    sh 'docker run -d -p 8080:8080 my-app:test'
    

6. 自动化部署与发布

部署策略

  • 蓝绿部署:通过负载均衡切换流量(需集成Nginx/HAProxy)。
  • 金丝雀发布:逐步将流量导入新版本(Kubernetes原生支持)。

部署工具集成

  • SSH部署:使用Publish Over SSH插件推送Jar包到服务器:
    sshPublisher(
      publishers: [
        sshPublisherDesc(
          configName: 'prod-server',
          transfers: [sshTransfer(execCommand: 'systemctl restart my-app')]
        )
      ]
    )
    
  • Kubernetes部署
    stage('Deploy to K8s') {
      steps {
        withKubeConfig([credentialsId: 'k8s-creds']) {
          sh 'kubectl apply -f k8s-deployment.yaml'
        }
      }
    }
    

发布后验证

  • 健康检查:集成Prometheus指标,自动触发kubectl rollout undo回滚。

8. 最佳实践与常见问题

安全实践

  • 最小权限原则:为每个作业分配独立凭证。
  • 插件审核:定期更新插件,禁用未经验证的来源。

常见问题解决

  • 构建失败:检查日志中的mvn依赖错误或测试用例失败。
  • 网络问题:在/etc/default/jenkins中配置HTTP代理。

9. 案例分析与总结

实战案例:电商应用CI/CD流水线

  1. 流程
    • 代码提交 → 单元测试 → SonarQube扫描 → Docker镜像构建 → 部署到Kubernetes测试集群 → 人工审批 → 生产发布。
  2. 成果
    • 构建时间从20分钟降至5分钟,生产环境部署频率提升300%。

总结

  • Jenkins通过可扩展的流水线,成为CI/CD的核心引擎。
  • 未来趋势:AI预测构建失败、Serverless Jenkins动态伸缩资源。

资源推荐


通过本指南,您可快速搭建企业级CI/CD平台,实现“代码即产品”的自动化交付闭环。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值