努力了这么久,但凡有点儿天赋,也该有些成功的迹象了。

前言
本篇文章引导你使用Jenkins
部署SpringBoot
项目,同时使用Docker
和Git
实现简单的持续集成和持续部署。(项目地址:sso-merryyou)
流程图如下:

push
代码到Github
触发WebHook
。(因网络原因,本篇使用gitee) Jenkins
从仓库拉去代码 mavem
构建项目 - 代码静态分析
- 单元测试
build
镜像 push
镜像到镜像仓库(本篇使用的镜像仓库为网易镜像仓库) - 更新服务
Jenkins安装
下载jenkins
从https://jenkins.io/download/下载对应的jenkins

初始化密码
访问本地:http://localhost:8080输入密码

选择插件
进入用户自定义插件界面,选择第二个(因为我们本次构建使用的为Pipelines
)
勾选与Pipelines
相关的插件

等待插件安装完成

配置用户名和密码

全局配置
系统管理-》全局工具配置 配置Git,JDK和Maven

安全配置
系统管理-》全局安全配置
- 勾选Allow anonymous read access
- 取消防止跨站点请求伪造

新建任务
新建任务-》流水线

构建脚本
勾选触发远程构建 (WebHooks触发地址),填写简单的Pipeline script

#!groovy pipeline{ agent any stages { stage('test'){ steps { echo "hello world" } } } }
测试脚本
立即构建

控制台输出

gitee集成WebHooks
添加SSH公匙

配置WebHooks

使用natapp实现内网穿透

修改脚本
修改Pipeline script

#!groovy pipeline{ agent any //定义仓库地址 environment { REPOSITORY="https://gitee.com/merryyou/sso-merryyou.git" } stages { stage('获取代码'){ steps { echo "start fetch code from git:${REPOSITORY}" //清空当前目录 deleteDir() //拉去代码 git "${REPOSITORY}" } } stage('代码静态检查'){ steps { //伪代码检查 echo "start code check" } } stage('编译+单元测试'){ steps { echo "start compile" //切换目录 dir('sso-client1') { //重新打包 bat 'mvn -Dmaven.test.skip=true -U clean install' } } } stage('构建镜像'){ steps { echo "start build image" dir('sso-client1') { //build镜像 bat 'docker build -t hub.c.163.com/longfeizheng/sso-client1:1.0 .' //登录163云仓库 bat 'docker login -u longfei_zheng@163.com -p password hub.c.163.com' //推送镜像到163仓库 bat 'docker push hub.c.163.com/longfeizheng/sso-client1:1.0' } } } stage('启动服务'){ steps { echo "start sso-merryyou" //重启服务 bat 'docker-compose up -d --build' } } } }
Pipeline的几个基本概念:
- Stage: 阶段,一个Pipeline可以划分为若干个Stage,每个Stage代表一组操作。注意,Stage是一个逻辑分组的概念,可以跨多个Node。
- Node: 节点,一个Node就是一个Jenkins节点,或者是Master,或者是Agent,是执行Step的具体运行期环境。
- Step: 步骤,Step是最基本的操作单元,小到创建一个目录,大到构建一个Docker镜像,由各类Jenkins Plugin提供。
更多Pipeline语法参考:pipeline 语法详解
测试
docker-compose up -d
启动服务

访问http://sso-taobao:8083/client1登录

修改内容效果如下:

更多效果图


代码下载
推荐文章
- Java创建区块链系列
- Spring Security源码分析系列
- Spring Data Jpa 系列
- 【译】数据结构中关于树的一切(java版)
