springboot+git+jenkins+docker实现ci/cd

一米网-Jo      2022-04-20     365

关键词:

引:现在DevOps这么运行,你没有理由不去了解,不去实践,这次就以Springboot为底,利用Git,jenkins,Docker实现持续集成和持续部署!

开发流程

下面是常用的开发流程图:


我们简单说说这张图:首先我们会将代码文件、测试文件以及Dockerfile都存在代码仓库里,版本控制利用git,这里代码仓库有很多选择,比如github、码云(本次使用)、Coding以及自己搭建的gitlab。然后由持续集成工具进行自动化构建,包括了测试、编译、打包、构建镜像、推送镜像到仓库(有很多选择,如docker官方仓库,时速运、自己搭建的Registry)、启动服务等操作,持续集成工具也有很多选择,比如Jenkins(这次使用)、Gitlab CI、Trivas CI。这里使用的容器是Docker,这里Docker的编排工具可以选择Swarm,也可以是K8S。

本次实现流程如下:

  1. push代码到码云触发WebHook

  2. Jenkins从码云拉取代码

  3. maven构建代码

  4. build镜像

  5. push镜像到镜像仓库

  6. 部署服务

配置

关于Jdk、Git、Maven的配置这里就不说,自己面向搜索引擎。这里主要说Jenkins和码云的配置。

Jenkins安装配置

  1. 下载Jenkins(采用war包安装)

  2. 将war包放入Tomcat的webapps目录下

  3. 进入YourHostIp:8080/jenkins路径下进行Jenkins的初始化,我们进入 用户自定义插件 安装界面,你可以根据自己的构建方式选择需要安装的插件,本次使用的Pipelines方式进行构建,Pipelines方式是Jenkins2推荐的方式,所以我们构建Pipelines相关的插件进行安装,当然待会进入Jenkins安装也行。

  4. 配置用户名和密码

  5. 全局工具配置(从系统管理进入全局工具配置,配置Jdk、Git、Maven)

  6. 安全配置(从系统管理进入全局安全配置),如下图:

Jenkins构建任务

  1. 新建任务,构建一个流水线任务(Pipeline)

  2. 在配置里构建触发器,如下图:

  3. 构建Pipeline脚本(Pipeline脚本写法见参考)

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    21

    22

    23

    24

    25

    26

    27

    28

    29

    30

    31

    32

    33

    34

    35

    36

    37

    38

    39

    40

    41

    42

    43

    44

    45

    46

    47

    48

    49

    50

    51

    52

    53

    54

    55

    56

    57

    58

    #!groovy

    pipeline{

    agent any

    //定义仓库地址

    environment {

    REPOSITORY="https://gitee.com/todorex/springboot_docker_git_jenkins_demo.git"

    }

    stages {

    stage('获取代码'){

    steps {

    echo "start fetch code from git:${REPOSITORY}"

    // 清空当前目录

    deleteDir()

    // 拉取代码

    git "${REPOSITORY}"

    // 清空之前的容器

    sh 'docker stop $(docker ps -a -q)'

    sh 'docker rm $(docker ps -a -q)'

    }

    }

    stage('Maven 构建'){

    steps {

    echo "start compile"

    // 切换目录

    dir('demo') {

    // 重新打包

    sh 'mvn -Dmaven.test.skip=true -U clean install'

    }

    }

    }

    stage('构建镜像'){

    steps {

    echo "start build image"

    dir('demo') {

    // build镜像

    sh 'docker build -t todorex/springboot_docker_git_jenkins_demo:1.0 .'

    // 登录镜像仓库

    sh 'docker login -u your_username -p your_password'

    // 推送镜像到镜像仓库

    sh 'docker push todorex/springboot_docker_git_jenkins_demo:1.0'

    }

    }

    }

    stage('启动服务'){

    steps {

    echo "start demo"

    // 部署服务

    sh 'docker run -d -p 8888:8888 --name=demo todorex/springboot_docker_git_jenkins_demo:1.0'

    }

    }

    }

    }

SSH的配置

为了避免jenkins拉取代码时需要输入密码,这里需要配置SSH免密码拉取。如下图:

WebHooks配置

当你每次对代码仓库进行push操作时,会自动通知jenkins进行构建

测试

这次项目的代码仓库为:springboot_docker_git_jenkins_demo

关于Dockerfile以及docker-compose.yml的编写,自己也去面向搜索引擎看看吧。

当我们push代码之后,jenkins就会自动帮我们进行构建。如下图:

PS:第一次比较慢是因为要安装Maven依赖,后面就好了。

总结

这里只是展示了一个CI/CD的开发流程,关于具体技术细节,无论是Jenkins还是Docker都需要深入学习,加油,骚年!

参考:

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

      http://niocoder.com/2018/04/22/SpringBoot+Docker+Git+Jenkins%E5%AE%9E%E7%8E%B0%E7%AE%80%E6%98%93%E7%9A%84%E6%8C%81%E7%BB%AD%E9%9B%86%E6%88%90%E5%92%8C%E9%83%A8%E7%BD%B2/

    2. Jenkins pipeline:pipeline 语法详解

      http://www.cnblogs.com/fengjian2016/p/8227532.htm

    3. 更多信息关注公众号:

剑指架构师系列-持续集成之maven+nexus+jenkins+git+springboot

 1、Nexus与Maven 先说一下这个Maven是什么呢?大家都知道,Java社区发展的非常强大,封装各种功能的Jar包满天飞,那么如何才能方便的引入我们项目,为我所用呢?答案就是Maven,只需要粘贴个Jar包的地址,Maven就会自动到... 查看详情

jenkins自动化部署springboot多模块依赖jar(代码片段)

...器和环境4.上传服务器总结前言实现使用jenkins自动化部署springboot多模块打包jar提示:以下是本篇文章正文内容,下面案例可供参考一、实现原理大概实现流程使用git命令拉取指定分支的代码使用maven指定命令构建项目到je... 查看详情

jenkins自动化部署springboot多模块依赖jar(代码片段)

...器和环境4.上传服务器总结前言实现使用jenkins自动化部署springboot多模块打包jar提示:以下是本篇文章正文内容,下面案例可供参考一、实现原理大概实现流程使用git命令拉取指定分支的代码使用maven指定命令构建项目到je... 查看详情

jenkins+docker一键自动化部署springboot项目

本文章实现最简单全面的​​Jenkins+docker+springboot​​ 一键自动部署项目,步骤齐全,少走坑路。环境:centos7+git(gitee)简述实现步骤:在docker安装jenkins,配置jenkins基本信息,利用Dockerfile和shell脚本实现项目自动拉取打包并运... 查看详情

jenkins集成springboot持续化构建代码

...   我个人使用的是阿里云的云服务器,项目采用的是springboot为框架,现在要做的功能就是将本地开发的代码提交到github中,通过jenkins自动化集成部署到云服务器。接下来开始步骤。1首先是在服务器上安装必要的软件,jenkin... 查看详情

jenkins和gitee自动化部署springboot项目(代码片段)

Centos使用Jenkins和Gitee自动化部署SpringBoot项目本教程是在腾讯云上面通过jenkins.war包进行Jenkins的部署,没有采用docker和yum的方式。此外,本项目是在云服务器本地进行自动构建,所以就没有配置publishoverssh环境准备首先... 查看详情

jenkins+docker一键自动化部署springboot项目(代码片段)

...文章及时了解本文章实现最简单全面的Jenkins+docker+springboot一键自动部署项目,步骤齐全,少走坑路。环境:centos7+git(gitee)简述实现步骤:在docker安装jenkins,配置jenkins基本信息,利用Docke 查看详情

jenkins+docker一键自动化部署springboot项目(代码片段)

...文章及时了解本文章实现最简单全面的Jenkins+docker+springboot一键自动部署项目,步骤齐全,少走坑路。环境:centos7+git(gitee)简述实现步骤:在docker安装jenkins,配置jenkins基本信息,利用Docke 查看详情

jenkins+springboot+maven多模块部署(代码片段)

一.jenkins的安装配置1.去官网下载war包,这种方式比较简单方便java-jarjenkins.war--httpPort=490012.首次运行有一个key放在服务器上需要你填入才能进入,同时需要配置账号密码3.如果没有被墙的话,最好把推荐的包都装上managejenkin-》plug... 查看详情

docker学习|第八篇:docker+jenkins单机部署springboot项目(代码片段)

Docker学习|第八篇:Docker+Jenkins单机部署SpringBoot项目前言最近学了一段时间的jenkins以及Docker之后,自己进行了一些自动持续集成的相关实践。在这里记录一下。环境本文所需环境如下:CentOs7系统已安装Docker已安装... 查看详情

linux服务器中jenkins集成gitgradle持续构建springboot项目

...nux服务器中使用Jenkins自动发布一个可作为linux服务发布的Springboot项目。自动构建需要经过如下步骤:从git仓库下载代码、使用Gradle进行构建、使用SSH推送到另一台linux服务器、项目作为linux服务启动。本章将逐条仔细讲解。一、... 查看详情

jenkins自动化部署springboot多模块依赖jar(代码片段)

...器和环境4.上传服务器总结前言实现使用jenkins自动化部署springboot多模块打包jar提示:以下是本篇文章正文内容,下面案例可供参考一、实现原理大概实现流程使用git命令拉取指定分支的代码使用maven指定命令构建项目到je... 查看详情

jenkins部署码云springboot项目到远程服务器

本文是上一篇文章的后续,上一篇只是利用Jenkins部署项目到本地,并启动,本文是将项目部署到远程服务器并执行。1.环境准备1.1安装插件上一篇文章已经介绍了需要安装的应用及插件,这一篇还需要2个插件,分别是如下插件... 查看详情

如何在jenkins,git和gradle的持续集成环境中处理用户名/密码?[关闭]

我们正在尝试为springboot应用程序设置一个持续集成环境。我们使用Jenkins,Gradle和Git。在application.properties文件(其中几个用于不同的子项目)中,我们有用于数据库和代理访问的硬编码用户名和密码。我们不希望将这些文件推入... 查看详情

使用jenkins持续化集成springboot(代码片段)

...减少运维的工作量,此篇文章将介绍如何持续化部署springboot项目。1.jenkens持续化部署的原理持续化部署的原理很简单,就是首先到你提供的svn/git上下载代码,然后获取配置的打包语句,打成jar包。然后使用ssh连... 查看详情

springboot(十六):使用jenkins部署springboot

SpringBoot(十六):使用Jenkins部署SpringBootjenkins是devops神器,介绍如何安装和使用jenkins部署SpringBoot项目jenkins搭建部署分为四个步骤;第一步,jenkins安装第二步,插件安装和配置第三步,PushSSH第四步,部署项目第一步,jenkins安装1... 查看详情

springboot(十六):使用jenkins部署springboot

...nkins是devops神器,本篇文章介绍如何安装和使用jenkins部署SpringBoot项目jenkins搭建部署分为三个步骤;第一步,jenkins安装第二步,插件安装和配置第三步,PushSSH第四步,部署项目第一步,jenkins安装准备环境:JDK:1.8Jenkins:2.83Centos:7.... 查看详情

docker+jenkins+gitee+springboot实现自动化部署流程(详细教程)(附下载工具地址)(代码片段)

下一篇:Docker+jenkins+gitee+springboot实现自动化部署流程(详细教程)(附下载工具地址)(2)1、环境准备1-1服务器相关(附下载工具)1-2centos7安装jdk81-3centos7安装maven3.6.31-4centos7安装git1-5安装docker1-6通过docker安装portainer1-7通过doc... 查看详情