Springboot+Git+Jenkins+Docker实现CI/CD

 以Springboot为底,利用Git,jenkins,Docker实现持续集成和持续部署!

开发流程

下面是常用的开发流程图:

dev

我们简单说说这张图:首先我们会将代码文件、测试文件以及Dockerfile都存在代码仓库里,版本控制利用git,这里代码仓库有很多选择,比如github、码云(本次使用)、Coding以及自己搭建的gitlab。然后由持续集成工具进行自动化构建,包括了测试、编译、打包、构建镜像、推送镜像到仓库(有很多选择,如docker官方仓库,时速运、自己搭建的Registry)、启动服务等操作,持续集成工具也有很多选择,比如Jenkins(这次使用)、Gitlab CI、Trivas CI。这里使用的容器是Docker,这里Docker的编排工具可以选择Swarm,也可以是K8S。

本次实现流程如下:

  1. push代码到码云触发WebHook
  2. Jenkins从码云拉取代码
  3. maven构建代码
  4. build镜像
  5. push镜像到镜像仓库
  6. 部署服务

配置

关于Jdk、Git、Maven的配置这里就不说,自己面向搜索引擎。这里主要说Jenkins和码云的配置。

Jenkins安装配置

  1. 下载Jenkins(采用war包安装)
  2. 将war包放入Tomcat的webapps目录下
  3. 进入YourHostIp:8080/jenkins路径下进行Jenkins的初始化,我们进入 用户自定义插件 安装界面,你可以根据自己的构建方式选择需要安装的插件,本次使用的Pipelines方式进行构建,Pipelines方式是Jenkins2推荐的方式,所以我们构建Pipelines相关的插件进行安装,当然待会进入Jenkins安装也行。
  4. 配置用户名和密码
  5. 全局工具配置(从系统管理进入全局工具配置,配置Jdk、Git、Maven)
  6. 安全配置(从系统管理进入全局安全配置),如下图:

    jenkins_security

Jenkins构建任务

  1. 新建任务,构建一个流水线任务(Pipeline)
  2. 在配置里构建触发器,如下图:

    jenkins_webhooks_url

  3. 构建Pipeline脚本(Pipeline脚本写法见参考)

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    
      #!groovy
      pipeline{
        agent any
        //定义仓库地址
        environment {
            REPOSITORY="https://gitee.com/todorex/springboot_docker_git_jenkins_demo.git"
        }
    
        stages {
    
            stage('获取代码'){
                steps {
                    echo "start fetch code from git:${REPOSITORY}"
                    // 清空当前目录
                    deleteDir()
                    // 拉取代码    
                    git "${REPOSITORY}"
                    // 清空之前的容器
                    sh 'docker stop $(docker ps -a -q)'
                    sh 'docker rm $(docker ps -a -q)'
                }
            }       
    
            stage('Maven 构建'){
                steps {
                    echo "start compile"
                    // 切换目录
                    dir('demo') {
                        // 重新打包
                        sh 'mvn -Dmaven.test.skip=true -U clean install'
                    }
                }
            }
    
            stage('构建镜像'){
                steps {
                    echo "start build image"
                    dir('demo') {
                        // build镜像
                        sh 'docker build -t todorex/springboot_docker_git_jenkins_demo:1.0 .'
                        // 登录镜像仓库
                        sh 'docker login -u your_username -p your_password'
                        // 推送镜像到镜像仓库
                        sh 'docker push todorex/springboot_docker_git_jenkins_demo:1.0'
                    }
                }
            }
    
            stage('启动服务'){
                steps {
                    echo "start demo"
                    // 部署服务
                    sh 'docker run -d -p 8888:8888 --name=demo todorex/springboot_docker_git_jenkins_demo:1.0'
                }
            }                
    
        }
    }
    

SSH的配置

为了避免jenkins拉取代码时需要输入密码,这里需要配置SSH免密码拉取。如下图:

gitee_ssh

WebHooks配置

当你每次对代码仓库进行push操作时,会自动通知jenkins进行构建
gitee_webhooks

测试

关于Dockerfile以及docker-compose.yml的编写,自己也去面向搜索引擎看看吧。

当我们push代码之后,jenkins就会自动帮我们进行构建

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值