乐趣区

Docker学习四Docker结合jenkins实现CICD

以前我们编写完代码都需要专门的运维人员去部署到测试环境,有些小公司连测试环境都没有,都是在本地直接测试,然后直接部署 tomact,非常麻烦。现在我们借助 jenkins 可以很方便的部署测试环境,开发人员只要提交代码,之后点击 jenkins 进行构建就好了。

安装 jenkins

  1. 将 jenkins 仓库的秘钥添加到本地
$ wget -q -O - https://pkg.jenkins.io/debian-stable/jenkins.io.key | sudo apt-key add -
  1. 将官方提供的软件仓库地址加入到本地的 apt 软件源中,/etc/apt/sources.list
$ deb https://pkg.jenkins.io/debian-stable binary/
  1. 安装 jenkins
$ sudo apt-get update
$ sudo apt-get install jenkins
  1. 启动
$ sudo /etc/init.d/jenkins [start|restart|stop]

补充:修改 jenkins 启动端口

在 /etc/default/jenkins 文件中,修改 HTTP_PORT=8090,我本地是 8090

浏览器设置 jenkins

  1. 访问 http://localhost:8090

    输入初始化密码,初始化密码在启动过程中,日志中会打印

也可以在 /var/lib/jenkins/secrets/initialAdminPassword 文件中查看初始化密码

  1. 安装插件

    单击“继续”。下一个屏幕提供安装建议的插件或选择特定插件的选项。

选择锐减的插件安装,安装过程有点慢,后面可以自己安装其他插件

  1. 创建新用户,或者使用默认的 admin

  2. 点击“开始使用 Jenkins”来访问主要的 Jenkins 仪表板:

    创建我们的构建任务

    1. 新建任务

选择流水线任务

  1. 写流水线脚本

#!groovy
pipeline {
  agent any
  environment {
    GIT_REPO="https://gitee.com/xcmike/dker-sbt.git"
    DOCKER_SCRIPT="/home/mike/scripts/"
    PROJECT="hello"
  }
  
  stages {stage('获取代码') {
        steps {echo "start clone code from git:${GIT_REPO}"
            deleteDir()
            git credentialsId: 'httpdown', url: "${GIT_REPO}"
        }
    }
    
    stage('代码静态检查') {
        steps {echo "start code check"}
    }
    
    stage('maven 编译打包') {
        steps {
            echo "start compile code"
            sh "mvn clean package"
        }
    }

    stage('docker 构建镜像') {
        steps {
            echo "start docker build image"
            sh "${DOCKER_SCRIPT}/build.sh ${PROJECT}"
        }
    }    
    
    stage('启动镜像') {
        steps {
            echo "start docker run image"
            sh "${DOCKER_SCRIPT}/deploy.sh" 
        }
    }    
    
  }
}
  1. httpdown 凭据设置,就是代码仓库的用户名和密码

你可以新增一个

  1. 代码仓库推荐使用 csdn 的因为 github 国内访问比较慢
  2. docker 构建镜像脚本,build.sh, 这个是直接消耗放在服务器上的,当然你可以直接在流水线直接写

    #!/bin/bash
    
    PROJECT_NAME=$1
    TIME=`date "+%Y%m%d%H%M"`
    IMAGE_NAME=${PROJECT_NAME}:${TIME}
    
    docker build -t ${IMAGE_NAME} .
    cd -
    echo "${IMAGE_NAME}" > IMAGE_NAME
    
  3. docker 镜像启动脚本,deploy.sh, 也在服务器上

    #!/bin/bash
    IMAGE=`cat IMAGE_NAME`
    docker run -d -p 80:8080 ${IMAGE}
  4. 开始构建

访问我们的服务

和上节课的应用一样,只不过我用 jenkins 来实现了自动化。

访问:http:// 服务器 ip 或域名 /api/say… 返回:heelo,docker,这样我们的 CICD 就实现了。

这里我是用后端项目做得演示,前端项目一样可以。pipeline 中因为我搭建的 docker 私有镜像仓库在 jenkins 中的授权问题,没有搞定,所以跳过了发布镜像到私有仓库,直接从本地启动镜像了。大家可以自己加一下。

欢迎关注我的公中号:mike 啥都想搞 ,一起交流学习

退出移动版