• Docker——Jenkins + Git + Registry构建自动化持续集成环境(CI/CD)


    前言

    在互联网时代,对于每一家公司,软件开发和发布的重要性不言而喻,目前已经形成一套标准的流程,最重要的组成部分就是持续集成(CI)及持续部署、交付(CD)。

    本文基于Jenkins+Docker+GitSvn实现一套CI自动化发布流程,同时支持撤回。

    一、发布流程设计

    工作流程:

    1. 开发人员提交代码到Git或Svn版本仓库;
    2. Jenkins人工/定时触发项目构建;
    3. Jenkins拉取代码、代码编码、打包镜像、推送到镜像仓库;
    4. Jenkins在Docker主机创建容器并发布。

    二、环境设计

    1、服务器部署信息

    服务器主机名IP运行服务
    jenkins服务器 jenkins 10.0.xxx.100 安装docker、 运行jenkins容器、git客户端、jdk、maven
    docker服务器 docker 10.0.xxx.103 安装docker、创建镜像运行java项目:bsm
    Git和私有仓库服务器 git_registry 10.0.xxx.104 安装docker、git服务、运行registry私有仓库容器

    2、版本信息

    名称版本软件包说明
    服务器 Centos 7.4 linux系统
    docker 17.12.0-ce yum安装 docker引擎服务
    jdk 1.8.0_45 jdk-8u45-linux-x64.tar.gz 运行jenkins需要的JDK环境
    maven 3.5.0 apache-maven-3.5.0-bin.tar.gz 构建java项目需要的工具
    jenkins 最新版本 docker hub下载最新jenkins镜像 持续集成工具
    registry 最新版本 docker hub下载最新registry镜像 docker私有仓库

    jdk官方下载地址:http://www.oracle.com/technetwork/cn/java/javase/downloads/jdk8-downloads-2133151-zhs.html
    maven官方下载地址:https://maven.apache.org/download.cgi
    jenkins官方镜像地址:https://hub.docker.com/_/jenkins/
    registry官方镜像地址:https://hub.docker.com/_/registry/

    3、操作系统信息

      CentOS7.4

    三、部署Git或Svn仓库

    在【git_registry】主机安装r。

    具体方法请参考网上教程 

    四、部署Jenkins

    在【jenkins】主机安装Jenkins。

    安装方法请参考:https://www.cnblogs.com/caoweixiong/p/12306340.html

     

    五、安装Docker

    在【jenkins、docker、git_registry】3台主机安装Docker。

    安装方法请参考:https://www.cnblogs.com/caoweixiong/p/12186736.html

    六、部署私有镜像仓库

    Docker Hub作为Docker默认官方公共镜像;这里搭建私有镜像仓库,官方也提供registry镜像,使得搭建私有仓库非常简单。

    在【git_registry】主机上搭建私有镜像仓库,具体方法请参考:https://www.cnblogs.com/caoweixiong/p/12197602.html

    七、构建Tomcat基础镜像

    项目需要使用tomcat,这里使用Dockerfile来制作镜像。

    具体方法请参考:https://www.cnblogs.com/caoweixiong/p/12230725.html

    八、Jenkins配置全局工具配置

    • 主页面 -> 系统管理 -> 全局工具配置

    指定JDK、Git、Maven路径:

     

     如果Jenkins主机没有git命令,需要安装Git:

    # yum install git -y

     

    九、Jenkins安装必要插件

    • 主页面 -> 系统管理 ->管理插件:

    安装SSH与Git Parameter插件。

    插件说明:

    1. SSH:用于SSH远程Docker主机执行Shell命令
    2. Git Parameter:动态获取Git仓库Branch、Tag
    • 配置SSH插件

    第一步:先创建一个用于连接Docker主机的凭据。

    主页面 -> 凭据 -> 系统 -> 右击全局凭据 -> 添加凭据:

     

    第二步:添加SSH远程主机
    主页面 -> 系统管理 -> 系统设置 -> SSH remote hosts:

     

    十、Jenkins创建项目并发布测试

    自己准备1个web项目,我这里的项目名字为bsm,通过svn管理代码。

    • 主页面 -> 新建任务 -> 输入任务名称,构建一个Maven项目

     注意:如果没有显示“构建一个Maven项目”选项,需要在管理插件里安装“Maven Integration”插件。

    • 设置参数化构建过程:

    • 设置源码管理

     注:这里使用svn管理源码

    • 设置maven构建命令选项:

    利用pom.xml文件构建项目。

    • 在Jenkins本机,构建镜像并推送到私有镜像仓库:

    上述命令说明:

    1. 根据参数 type 来判断是部署还是撤回;
    2. 部署项目:创建Dockerfile文件,使用当前编译序号做为镜像的版本号;
      •   基于私有镜像仓库的 tomcat 镜像;
      •   先删除webapps目录下的war包;
      •   将jenkins编译好的war包,复制到tomcat镜像中的webapps目录下
      •   启动tomcat
    3. 部署项目:构建镜像;
    4. 部署项目:上传镜像到私有仓库;
    5. 部署项目:删除本地镜像;
    6. 撤回项目:什么也不做;
    • 在Jenkins本机,通过SSH远程连接到Docker主机,下载并使用推送的镜像创建容器

     

    上述命令说明:

    1. 根据参数 type 来判断是部署还是撤回;
    2. 部署项目:获取当前编译版本号,从私有镜像仓库下载镜像进行部署;
      •   停止容器;
      •   删除容器;
      •   删除本地历史镜像
      •   启动容器,并暴露端口
    3. 撤回项目:参数【version】为空,默认返回到上一版本;
    4. 撤回项目:参数【version】不为空,撤回到指定版本;
    5. 部署项目:删除本地镜像;
    6. 撤回项目:什么也不做;
    • 选择tag,开始构建:

    注:type=deploy,部署项目;type=rollback,撤回项目

     

     

     

     

    十一、验证

    浏览器访问bsm项目:http://10.0.xxx.103:8888

    参考:

    https://blog.51cto.com/lizhenliang/2159817

  • 相关阅读:
    随堂作业——到底有几个“1”(C++)
    《你的灯亮着吗》读书笔记3
    《你的灯亮着吗》读书笔记2
    软件工程随堂小作业——寻找“水桶”(C++)
    《你的灯亮着吗》读书笔记1
    《梦断代码》阅读笔记一
    软件工程课堂练习--四则运算(三)
    软件工程课堂练习--结对初体验
    软件工程课堂练习--四则运算单元测试
    软件工程课堂练习四则运算续篇
  • 原文地址:https://www.cnblogs.com/caoweixiong/p/12230302.html
Copyright © 2020-2023  润新知