自动化部署利器jenkins(CICD)

书山有路勤为径,学海无涯苦作程序员

什么是CICD

CICD称之为持续集成、持续交付/部署,
CI、CD应该分成两个步骤来阐述
自动化部署利器jenkins(CICD)_第1张图片

CI

CI(Continous Integration)持续集成,指的是频繁地把代码集成主干中。
这样做的好处有:

  1. 快速发现错误:每提交一点更新,就集成到主干,由CI系统告诉你集成成功或者失败(举例:java代码提交后,由CI系统帮忙编译+打包,若整个流程执行顺利,则本次提交的代码集成成功)
  2. 防止分支大幅度偏离主干:通过频繁把代码集成到主干中,可以实现产品的快速迭代。

CD

持续交付Continous Delivery

频繁地将软件的新版本,交付给质量团队或用户,以供评审。
持续交付可以看做持续集成的下一步,它强调的是,无论产品怎么更新,都是可以随时交付的。

持续部署Continous Deployment

将持续交付后的产品进行部署,并发布到生产阶段。

常见的CICD工具

CI:jenkins(开源免费)、Travis、Circle、walle
CD:spug

jenkins

工作流程

图源来自“头条@波波说运维”自动化部署利器jenkins(CICD)_第2张图片

原理

通过git webhook去触发jenins构建原理
图源来自“头条@波波说运维”
自动化部署利器jenkins(CICD)_第3张图片

优势

jenkins的优势:

  • 持续集成CI(Continuous Integration)
  • 持续交付/持续部署CD(Continous Delivery/Deployment)
  • 实时监控集成过程,提供日志文件和提醒功能

部署方式

jenkins触发式构建

触发式构建,常用于开发环境中使用,开发人员通过push代码到git server,git server通过设置的web hook去请求jenkins server,执行任务构建,并部署到对应的服务器。

延伸:触发式构建可以不考虑环境的使用,每次push代码到git服务器后,让jenkins自动执行CI过程。此方法可以减少程序员对代码的编译、打包等操作,简化操作流程,释放双手

jenkins参数化构建

参数化构建,可以手动干预CI过程。一般会使用branch、tag作为参数,指定编译版本
自动化部署利器jenkins(CICD)_第4张图片

jenkins定时构建

使用crontab表达式定时构建
自动化部署利器jenkins(CICD)_第5张图片

jenkins的实际应用

自动化部署利器jenkins(CICD)_第6张图片

此流程jenkins充当了CI、CD角色,比较简单,不深入交流。
想了解jenkins的真正用法,可以看下面的例子

jenkins集成发布系统使用(docker版本)

自动化部署利器jenkins(CICD)_第7张图片

  1. 通过本地提交代码到git服务器
  2. git服务器触发web hook,去调用jenkins相关任务
  3. jenkins执行构建
  4. jenkins向git发送pull请求
  5. jenkins将git代码更新到自己的服务上
  6. jenkins将代码进行编译,打包(docker版本会生成镜像)
  7. jenkins将生成的镜像推送到oss对象存储系统(此处为镜像仓库)
  8. 当系统要上线时,在发布系统(spug)上创建发布任务,经过审批后,将docker-compose.yml和script脚本发送给web服务器
  9. web服务器执行脚本
  10. web服务器根据docker-compose.yml的配置,向镜像仓库oss发送更新请求
  11. web服务器从镜像仓库oss中更新镜像
  12. 根据镜像创建容器并启动

你可能感兴趣的:(jenkins,docker,jenkins)