转载

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

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

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

前言

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

流程图如下:

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

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

Jenkins安装

下载jenkins

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

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

初始化密码

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

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

选择插件

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

勾选与 Pipelines 相关的插件

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

等待插件安装完成

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

配置用户名和密码

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

全局配置

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

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

安全配置

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

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

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

新建任务

新建任务-》流水线

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

构建脚本

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

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

#!groovy
pipeline{
	agent any

	stages {

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

测试脚本

立即构建

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

控制台输出

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

gitee集成WebHooks

添加SSH公匙

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

配置WebHooks

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

使用 natapp 实现内网穿透

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

修改脚本

修改 Pipeline script

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

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

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

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

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

修改内容效果如下:

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

更多效果图

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

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

代码下载

  • github: https://github.com/longfeizheng/sso-merryyou
  • gitee: https://gitee.com/merryyou/sso-merryyou
原文  https://longfeizheng.github.io/2018/04/22/SpringBoot Docker Git Jenkins实现简易的持续集成和部署/
正文到此结束
Loading...