开发者社区> whs0668> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

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

简介: 本篇文章引导你使用Jenkins部署SpringBoot项目,同时使用Docker和Git实现简单的持续集成和持续部署。
+关注继续查看

前言

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

修改内容效果如下:

更多效果图

代码下载

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

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
SpringBoot2.x系列教程23--SpringBoot中实现文件上传
前言 文件上传是开发时比较常见的功能之一,但是SpringBoot并没有提供额外的文件上传技术,还是依赖于SpringMVC的文件上传技术。因为在SpringBoot中集成了SpringMVC的很多常用功能,所以SpringBoot的Web模块中也包含了文件上传部分,其实实现起来没有太多的难度。 本章节 壹哥 就给大家讲一下在Spring Boot中如何实现单个文件和多个文件的上传功能。 一. 概述 1. MultipartFile简介 在SpringMVC时代,就提供了MultipartFile这个封装类,它包含了文件的二进制流和文件相关属性(文件名、大小等),而在Spring Boot中
28 0
SpringBoot2.x系列教程24--SpringBoot实现文件上传到OSS阿里云存储
前言 在上一章节中,壹哥 给大家讲解了如何在SpringBoot实现单个文件和多个文件上传,但是那种方式现在挺多项目中都不再采用了,而是会把文件上传到云存储服务器中,比如阿里云、腾讯云、华为云等。所以今天 壹哥 利用阿里云的OSS存储,讲解如何把本地文件存储到云存储服务器中,本文会教给你如何购买配置阿里云OSS,并且教你如何实现文件上传到云空间,干货满满哦。 一. 阿里云OSS简介 1. 存储服务简介 我们进行项目开发,很多时候都需要进行文件、图片等的上传,对于很多项目来说,虽然有FastDFS等文件存储服务器技术,但其实我们完全没有必要搭建自己的图片等文件服务器。对一个小型非专业的应用来说,
72 0
SpringBoot2.x系列教程26--SpringBoot对CORS跨域访问的处理实现
前言 我们在前后端分离的开发模式中,H5前端调用后端的URL接口,一般都是采用Ajax来实现调用,但是浏览器对Ajax的调用会有跨域的限制,这会导致调用后端接口失败。 What?你都不知道什么是跨域?那..... 你就看看本文吧!本篇文章中,我会给大家讲解同源策略、跨域访问,以及CORS跨域访问的解决方案,以及在SpringBoot中如何实现跨域访问。 一. 跨域问题简介 1. 什么是跨域访问? JavaScript出于安全方面的考虑,做了一个同源策略的限制,也就是说不允许跨域访问其他资源,更通俗的说就是浏览器不能执行其他网站的脚本。它是由浏览器的同源策略造成的,是浏览器对JavaScri
45 0
SpringBoot2.x系列教程28--SpringBoot中整合Mybatis框架实现数据库CRUD操作
前言 在上一章节中,我带大家在Spring Boot中整合了JdbcTemplate,利用JdbcTemplate感觉会比较麻烦,所以我让各位思考有没有更简单易用的实现方式。那么接下来在这一章节中,我会继续带领大家学习在Spring Boot中整合Mybatis框架,利用Mybatis来实现数据库的操作。 一. Mybatis简介 1. MyBatis概述 MyBatis是一款优秀的持久层框架,它本来是Apache的一个开源项目iBatis。在2010年的时候,这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis,在2013年
24 0
SpringBoot2.x系列教程29--SpringBoot整合JPA框架实现数据库CRUD操作
前言 在上一章节中,壹哥 带大家在Spring Boot中整合了Mybatis框架,虽然Mybatis进行数据库操作已经很简单了,但是作为一个程序员,我们就得有追求极致的精神,就要想一下,还有没有第3种方式可以进行数据库操作呢? 其实是有的! 所以在这一章节中,我会继续带领大家学习在Spring Boot中整合JPA框架,利用JPA来实现数据库的操作。 一. JPA简介 1. JPA概念 JPA是Sun官方提出的Java持久化规范,是Java Persistence API的简称,中文名‘Java持久层API’,它本质上是一种ORM规范。 JPA通过 JDK 5.0 的 注解或XML 两
28 0
SpringBoot2.x系列教程06--SpringBoot中结合XML文件实现SSM整合
前言 前面几篇文章中,壹哥 主要是带各位简单的认识一下SpringBoot,算是做了个开场白,接下来才是咱们学习SpringBoot的重点。所以从本篇文章开始,咱们逐步进入到更实用的学习上来,前面的配置只是为了让我们使用SpringBoot的时候更简单舒服一点。 接下来我们就看看在SpringBoot到底该怎么实现SSM整合吧。 一. 添加核心配置 1. SSM整合简介 在学习SpringBoot之前,相信各位都有SSM整合的经验,我们知道之前的SSM配置,真的是很痛苦,需要编写大量的xml文件,稍不注意就会出错。但是自从有了SpringBoot,这一切都变得轻松而简单了。 Spring
31 0
SpringBoot2.x系列教程07--SpringBoot中以注解方式实现SSM整合
前言 在上一章节中,壹哥 跟大家讲过,在SpringBoot项目中,我们有两种SSM整合的方式: ● 1️⃣. XML方式; ● 2️⃣. 注解两种方式。 不知道现在你有没有掌握以XML文件方式进行的SSM整合呢?如果你有跟着我之前的文章编写了对应的代码,会发现以XML的实现方式实现SSM整合,虽然比传统的SSM整合过程简单,但是总感觉还是比较麻烦。所以接下来 壹哥 带大家再学习一种更简单的SSM整合方式,本节课咱们来学习以注解方式来实现SSM整合的过程。 一. 以注解方式实现SSM整合 1. 创建新的项目模块 首先请参考我之前的文章,在之前的项目基础之上,创建一个新的module模块。在新的
13 0
SpringBoot2.x系列教程15--SpringBoot中整合HttpMessageConverters实现JSON格式化
前言 在之前的章节中,壹哥 带着各位学习了如何在Spring Boot中进行SSM整合。那么接下来,我们会继续深入研究SpringBoot对SpringMVC框架的支持,学习SpringBoot如何进行更深度的定制化Web开发。 前面我讲过,SpringBoot严格的来说,应该是一种负责把其他已有框架整合在一起的工具,SpringBoot主要是把各种框架都整合集中在一起,简化我们的Web开发。所以很多的功能,其实都不是SpringBoot完成的,而是由SpringBoot中整合的其他框架来完成的。比如Web开发,更多的是由SpringMVC来完成,只是SpringBoot很好的把Spring
68 0
SpringBoot2.x系列教程17--SpringBoot中对URL路径规则的特殊匹配实现方案
前言 在前面的章节中,壹哥 带大家对JSON进行了序列化和反序列化的特殊处理,但是我们开发时,不仅仅JSON需要特殊处理,有时候就连我们的URL接口地址中也有需要特殊处理的地方。 比如,在一个URL中,“.” 字符一般是作为分隔符来定义格式的,例如/projects/spring-boot.json中的 “点” ,那么如果在URL带有这个 ”.“,我们要不要做特殊的处理呢? 另外有的人在访问URL时,可能会在尾部带有一个”/“,如果我们想识别URL路径尾部的斜杠,如“/home/”中的第2个 “/”,该怎么办? 这些都是一些比较特殊的需求,那么我们要不要处理呢?接下来 壹哥 就教各位把U
46 0
Springboot智能物流拼单组合系统设计与实现
如今互联网与电子商务的飞速发展,物流服务行业也日益重要,如何提升物流服务的效率,降低物流服务的成本成为当下人们所关注的内容。大多数的传统物流运输业花费大量的金钱和人力在运输、仓储、配送中,因此这些传统物流企业大多成本高利润低。为了保证物流市场的健康发展,需要有效地支持物流配送,提高物流质量服务。而物流配送活动,作为连接商家和客户的关键环节最应当被重视和优化,从而避免出现物流配送效率低、资源浪费严重和配送成本高等问题,以此来提升我国物流行业的整体发展。 物流配送优化主要可以从2个方面进行优化。一、提高车辆的装载问题:即车辆装载问题(VehicleFillingProblem.VFP)。二、减少
41 0
+关注
28
文章
6
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载