jenkins+docker+spring boot自动化构建

前言

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

流程图如下:

https://i-blog.csdnimg.cn/blog_migrate/f12b6cf91f02b2a0e4146f3154b00090.png

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

Jenkins安装

下载jenkins

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

https://i-blog.csdnimg.cn/blog_migrate/ae0b2dc7ebec6012fedac545b2373fc7.png

初始化密码

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

https://i-blog.csdnimg.cn/blog_migrate/0de8059e59fc19154e1305dd88fdca00.png

选择插件

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

勾选与Pipelines相关的插件

https://i-blog.csdnimg.cn/blog_migrate/222a06608c57bf83e73b28c34b6aa62c.png

等待插件安装完成

https://i-blog.csdnimg.cn/blog_migrate/ee64e1389424128fb354fea0523307d2.png

配置用户名和密码

https://i-blog.csdnimg.cn/blog_migrate/bf27330896f0f8701b97ddf16a131c6f.png

全局配置

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

https://i-blog.csdnimg.cn/blog_migrate/e9b4c3d2eb49097a4b5c4536362feeb5.png

安全配置

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

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

https://i-blog.csdnimg.cn/blog_migrate/f1d6d338222596579d1a3890939a75df.png

新建任务

新建任务-》流水线

https://i-blog.csdnimg.cn/blog_migrate/bfa7dea3cede7098977a940ef7464d57.png

构建脚本

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

https://i-blog.csdnimg.cn/blog_migrate/e338920b0083b9f94a5a73f194b9d565.png

#!groovy
pipeline{
	agent any

	stages {

		stage('test'){
			steps {
				echo "hello world"
			
			}
		}			
	}
}

测试脚本

立即构建

https://i-blog.csdnimg.cn/blog_migrate/88d78ff48502e94c7b9c935d02ec07c9.png

控制台输出

https://i-blog.csdnimg.cn/blog_migrate/cda5cf711d541f13ac4472163abfc4ef.png

gitee集成WebHooks

添加SSH公匙

https://i-blog.csdnimg.cn/blog_migrate/37169cd5fffb6e401828a5853bf1d5b4.png

配置WebHooks

https://i-blog.csdnimg.cn/blog_migrate/048e5db434830658800e9688415946e0.png

使用natapp实现内网穿透

https://i-blog.csdnimg.cn/blog_migrate/61d34bb6f93aee6e49e832b420b0813b.png

修改脚本

修改Pipeline script

https://i-blog.csdnimg.cn/blog_migrate/50a2eb619a31c09a92dd6e50abe0f793.png

#!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://i-blog.csdnimg.cn/blog_migrate/784a6314b106d8ea24394e81ae670336.png

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

https://i-blog.csdnimg.cn/blog_migrate/276c622f38797e054580863750e0dd83.png

修改内容效果如下:

https://i-blog.csdnimg.cn/blog_migrate/c8235d3c40a1f265cec8d0eaa8814ac5.gif

更多效果图

https://i-blog.csdnimg.cn/blog_migrate/094b7681ce2c80007cdb7af113df1aea.png

https://i-blog.csdnimg.cn/blog_migrate/fa9b464299dae5c98a726048dc9787d8.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值