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

news/2024/7/7 22:32:52

前言

本篇文章引导你使用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 anystages {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登录

修改内容效果如下:

更多效果图

代码下载

github:https://github.com/longfeizheng/sso-merryyou
gitee:https://gitee.com/merryyou/sso-merryyou
文章来源:https://my.oschina.net/merryyou/blog/1799317


http://lihuaxi.xjx100.cn/news/238345.html

相关文章

Spark的基础应用

目的要求 搭建Spark集群环境;Spark集群的启动、浏览与关闭;使用Eclipse编写Spark应用程序包;如何运行Spark任务; 实验环境 Java jdk 1.7;apache-maven-3.6.0;Eclipse;Apache_Hadoop集群&#…

以太坊中的安全代币案例

想知道更多关于区块链技术知识,请百度【链客区块链技术问答社区】 链客 ,有问必答!我在关于安全令代币(第一部分,第二部分)有争议的文章中,我提到过,以太坊可能不是长期执行安全代币…

mysql查看正在执行的sql语句

有2个方法: 1、使用processlist,但是有个弊端,就是只能查看正在执行的sql语句,对应历史记录,查看不到。好处是不用设置,不会保存。 -- use information_schema; -- show processlist; 或者: -- …

在Unity中创建3D直升机游戏

In this lecture from Colton Ogden, you can learn game development principles by coding a Helicopter Game 3D using Unity and C#. The principles you learn can apply to any programming language and any game.在Colton Ogden的本次演讲中,您可以通过使用…

最新Java面试题答案

JAVA基础 JAVA中的几种基本类型,各占用多少字节? 下图单位是bit,非字节 1B8bit String能被继承吗?为什么? 不可以,因为String类有final修饰符,而final修饰的类是不能被继承的,实现细节不允许改…

简化区块链中的数字签名

想知道更多关于区块链技术知识,请百度【链客区块链技术问答社区】 链客,有问必答!现在我们经常在区块链中看到数字签名这一术语是非常常见的。在发送交易时,无论是比特币、Ethereum、Hyperledger Fabric还是任何其他平台&#xff…

Java基础-泛型

Java基础-泛型 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任。 一.泛型的引入 由于集合可以存储任意类型的元素,导致取出时,如果出现强转就会引发运行时异常(ClassCastException…

spring vertx_如何在Spring设置Vertx

spring vertxby Rick Lee李瑞克(Rick Lee) 如何在Spring设置Vertx (How to set up Vertx in Spring) Spring is probably the most popular framework in the Java space. We all love its dependency injection and all that autowired/configuration magic. It makes unit t…