SpringBoot+Docker+Git+Jenkins实现简易的持续集成和持续部署

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

https://user-gold-cdn.xitu.io/2018/4/22/162ed08ece49e85b?w=2461&h=1500&f=jpeg&s=278007

前言

本篇文章引导你使用Jenkins部署SpringBoot项目,同时使用DockerGit实现简单的持续集成和持续部署。(项目地址:sso-merryyou

流程图如下:

https://user-gold-cdn.xitu.io/2018/4/22/162ed08ecec13118?w=1103&h=591&f=png&s=140477

  1. push代码到Github触发WebHook。(因网络原因,本篇使用gitee
  2. Jenkins从仓库拉去代码
  3. mavem构建项目
  4. 代码静态分析
  5. 单元测试
  6. build镜像
  7. push镜像到镜像仓库(本篇使用的镜像仓库为网易镜像仓库)
  8. 更新服务

Jenkins安装

下载jenkins

jenkins.io/download/下载对应的jenkins

https://user-gold-cdn.xitu.io/2018/4/22/162ed08ece224c97?w=867&h=635&f=png&s=45316

初始化密码

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

https://user-gold-cdn.xitu.io/2018/4/22/162ed08ecf073885?w=1128&h=525&f=png&s=83432

选择插件

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

勾选与Pipelines相关的插件

https://user-gold-cdn.xitu.io/2018/4/22/162ed08ecf7c5cfa?w=1237&h=774&f=png&s=128554

等待插件安装完成

https://user-gold-cdn.xitu.io/2018/4/22/162ed08ece9cde31?w=1206&h=726&f=png&s=109708

配置用户名和密码

https://user-gold-cdn.xitu.io/2018/4/22/162ed08f1531b92e?w=944&h=630&f=png&s=55631

全局配置

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

https://user-gold-cdn.xitu.io/2018/4/22/162ed08f2c5d17a6?w=1583&h=533&f=png&s=19199

安全配置

系统管理-》全局安全配置

  • 勾选Allow anonymous read access
  • 取消防止跨站点请求伪造

https://user-gold-cdn.xitu.io/2018/4/22/162ed08f3bc5548d?w=852&h=465&f=png&s=19060

新建任务

新建任务-》流水线

https://user-gold-cdn.xitu.io/2018/4/22/162ed08f811f33a1?w=1088&h=550&f=png&s=57453

构建脚本

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

https://user-gold-cdn.xitu.io/2018/4/22/162ed08f3d2e4f8f?w=1001&h=524&f=png&s=31334

#!groovy
pipeline{
	agent any

	stages {

		stage('test'){
			steps {
				echo "hello world"
			
			}
		}			
	}
}
复制代码
测试脚本

立即构建

https://user-gold-cdn.xitu.io/2018/4/22/162ed08f820b3e6a?w=820&h=503&f=png&s=44503

控制台输出

https://user-gold-cdn.xitu.io/2018/4/22/162ed08f8a7f8f45?w=839&h=463&f=png&s=41369

gitee集成WebHooks

添加SSH公匙

https://user-gold-cdn.xitu.io/2018/4/22/162ed08f9ae83e02?w=1013&h=512&f=png&s=34530

配置WebHooks

https://user-gold-cdn.xitu.io/2018/4/22/162ed08fc5f47587?w=990&h=391&f=png&s=32552

使用natapp实现内网穿透

https://user-gold-cdn.xitu.io/2018/4/22/162ed08ff16a83a9?w=628&h=256&f=png&s=9641

修改脚本

修改Pipeline script

https://user-gold-cdn.xitu.io/2018/4/22/162ed08fcfa320d8?w=947&h=416&f=png&s=21496

#!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 启动服务

https://user-gold-cdn.xitu.io/2018/4/22/162ed08ff98750c0?w=1334&h=181&f=png&s=17109

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

https://user-gold-cdn.xitu.io/2018/4/22/162ed0901a263fde?w=714&h=274&f=png&s=36013

修改内容效果如下:

https://user-gold-cdn.xitu.io/2018/4/22/162ed0901be331ad?w=1228&h=582&f=gif&s=2457081

更多效果图

https://user-gold-cdn.xitu.io/2018/4/22/162ed0904b7afdd6?w=1626&h=878&f=png&s=50206

https://user-gold-cdn.xitu.io/2018/4/22/162ed090724c6893?w=1204&h=655&f=png&s=73595

代码下载

推荐文章

  1. Java创建区块链系列
  2. Spring Security源码分析系列
  3. Spring Data Jpa 系列
  4. 【译】数据结构中关于树的一切(java版)

https://user-gold-cdn.xitu.io/2018/4/17/162d1b4f7821b3ec?w=301&h=330&f=png&s=78572

???关注微信小程序java架构师历程 上下班的路上无聊吗?还在看小说、新闻吗?不知道怎样提高自己的技术吗?来吧这里有你需要的java架构文章,1.5w+的java工程师都在看,你还在等什么?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值