引: 现在 DevOps 这么运行, 你没有理由不去了解, 不去实践, 这次就以 Springboot 为底, 利用 Git,jenkins,Docker 实现持续集成和持续部署!
开发流程
下面是常用的开发流程图:
http://blog.todorex.com/cicd/devops.jpg 我们简单说说这张图: 首先我们会将代码文件, 测试文件以及 Dockerfile 都存在代码仓库里, 版本控制利用 Git, 这里代码仓库有很多选择, 比如 GitHub, 码云 (本次使用),Coding 以及自己搭建的 GitLab. 然后由持续集成工具进行自动化构建, 包括了测试, 编译, 打包, 构建镜像, 推送镜像到仓库 (有很多选择, 如 docker 官方仓库, 时速运, 自己搭建的 Registry), 启动服务等操作, 持续集成工具也有很多选择, 比如 Jenkins(这次使用),GitLab CI,Trivas CI. 这里使用的容器是 Docker, 这里 Docker 的编排工具可以选择 Swarm, 也可以是 K8S.
本次实现流程如下:
push 代码到码云触发 webHook
Jenkins 从码云拉取代码
maven 构建代码
build 镜像
push 镜像到镜像仓库
部署服务
配置
关于 Jdk,Git,Maven 的配置这里就不说, 自己面向搜索引擎. 这里主要说 Jenkins 和码云的配置.
Jenkins 安装配置
下载 Jenkins https://jenkins.io/download/ (采用 war 包安装)
将 war 包放入 Tomcat 的 webapps 目录下
进入 YourHostIp:8080/jenkins 路径下进行 Jenkins 的初始化, 我们进入 用户自定义插件 安装界面, 你可以根据自己的构建方式选择需要安装的插件, 本次使用的 Pipelines 方式进行构建, Pipelines 方式是 Jenkins2 推荐的方式, 所以我们构建 Pipelines 相关的插件进行安装, 当然待会进入 Jenkins 安装也行.
配置用户名和密码
全局工具配置 (从系统管理进入全局工具配置, 配置 Jdk,Git,Maven)
安全配置 (从系统管理进入全局安全配置), 如下图:
Jenkins 构建任务
新建任务, 构建一个流水线任务 (Pipeline)
在配置里构建触发器, 如下图:
构建 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 免密码拉取. 如下图:
WebHooks 配置
当你每次对代码仓库进行 push 操作时, 会自动通知 jenkins 进行构建
测试
这次项目的代码仓库为:
关于 Dockerfile 以及 docker-compose.YAML 的编写, 自己也去面向搜索引擎看看吧.
当我们 push 代码之后, jenkins 就会自动帮我们进行构建. 如下图:
PS: 第一次比较慢是因为要安装 Maven 依赖, 后面就好了.
总结
这里只是展示了一个 CI/CD 的开发流程, 关于具体技术细节, 无论是 Jenkins 还是 Docker 都需要深入学习, 加油, 骚年!
参考:
SpringBoot+Docker+Git+Jenkins 实现简易的持续集成和持续部署:
http://niocoder.com/2018/04/22/SpringBoot+Docker+Git+Jenkins实现简易的持续集成和部署/
Jenkins pipeline:pipeline 语法详解 http://www.cnblogs.com/fengjian2016/p/8227532.html
http://www.cnblogs.com/fengjian2016/p/8227532.html
来源: http://www.bubuko.com/infodetail-2869522.html