Jenkins Pipeline 流水线方式部署 SpringBoot 项目1

简介: Jenkins Pipeline 流水线方式部署 SpringBoot 项目

Jenkins Pipeline 流水线方式部署 SpringBoot 项目,本文更多的可能是用一个简单可实现的实操小案例,来让大家快速的使用pipeline部署出一个SpringBoot项目,但是要想完整的体现出pipeline任务的优势,可能这篇文章并不完美的展现出来。

在之后的文章中,会慢慢谈到的~

适合本文的读者:想要了解 Jenkins 、或者对Jenkins已经有所了解的小伙伴,再或者是扩展知识面的朋友,都是可以的。

一门技术准确说起来,对于你个人而言,它没有一个准确的定位的,你需要它,它就是适合你的,所以常常会说到,当你知道的越多的时候,你不知道的也随之在递增

前言

抱歉

首先要跟阅读过前面文章的小伙伴们说一声抱歉,十分不好意思

因为我个人的疏忽,在安装环境的那篇文章 ☞【Docker安装Jenkins】 中的启动 Jenkins 的命令中缺少了关于 docker 的映射,如果按照那个方式安装 Jenkins 是无法在 Jenkins 内部中直接运行 docker 命令的。

发现的第一时间,我也尝试了其他的方式进行调整,但是始终无果,我最后采取的方式就删除了原来的容器,重新走了一遍安装环境的流程

所以如果是按照【Docker安装Jenkins】文章安装环境的小伙伴,需要重新搭建一遍环境。真的十分不好意思。

启动命令这篇文章和之前的文章都已经修正 👨‍💻

感谢

写了前几篇文章,大家给予的反馈我都有一一收到,非常感谢大家的阅读,让我越发想要将要这个专栏写好,也希望让每一位阅读的朋友,有所收获。我想那就是我的写文章的快乐吧~😁


如果大家看完前几篇文章,大家对 Jenkins 的基本使用肯定是没有问题的,如使用Maven方式部署一个SpringBoot项目,又或者是使用自由风格方式部署前端项目等。

今天继续聊到的是使用流水线方式部署一个 SpringBoot 项目,会从浅至深,一步步带领大家实操,以及说明其中为什么需要如此做,当然,如有疑问,大家留下评论即可,我会在看到的第一时间给予回复。

安装环境

2.1、启动命令

之前出现疏忽的启动命令:🙇‍♂️

  docker run -uroot -d --restart=always -p 9001:8080 \
  -v /home/jenkins/workspace/:/var/jenkins_home/workspace \
  -v /var/run/docker.sock:/var/run/docker.sock \
  --name jenkins jenkins/jenkins:lts

修正后的启动命令:!!!👨‍🏫

  docker run -uroot -d --restart=always --privileged=true  -p 9001:8080 \
  -v /home/jenkins/workspace/:/var/jenkins_home/workspace \
  -v /var/run/docker.sock:/var/run/docker.sock \
 -v /usr/bin/docker:/usr/bin/docker \
  --name jenkins jenkins/jenkins:lts

修正后的启动命令多了关于 docker 的映射:-v /usr/bin/docker:/usr/bin/docker

还有--privileged=true 指定容器为特权容器~

其他的配置的都可以参考前面的 【Docker安装Jenkins】文章。

至于配置环境变量,则是在本文中~

2.2、配置环境变量

image.png

(图片说明:打开全局系统配置)

找到全局属性配置:

image.png

(图片说明:配置环境变量)

补充:我部署的是Springboot项目,所以主要依赖的环境变量就是jdk和maven

 key:JAVA_HOME
 value:/var/jenkins_home/tools/hudson.model.JDK/jdk8
 ​
 key:M2_HOME
 value:/var/jenkins_home/tools/hudson.tasks.Maven_MavenInstallation/Maven3.6.3
 ​
 key:PATH+EXTRA
 value:$M2_HOME/bin

这里的jdk8、Maven3.6.3均我在下载的时候,自定义的名称。

环境变量的值的由来:

其实在Jenkins容器中的目录下均可查看。如果不知道自己的,可以进入jenkins容器中查看:

 docker exec -it -uroot jenkins bash
 cd /var/jenkins_home/tools
 ls
 pwd

注意:如果你没有使用过jdk、maven,jenkins是不会给你自动下载的,所以你得回顾一下之前的内容,使用以下maven编译下项目,才能在容器中看到如下目录。

image.png



留下个小思考:

为什么Maven要配/bin执行命令的全局变量,而Java不用?

一、浅提一下 Pipeline

浅提一下:

大伙整个干净的SpringBoot项目放到github上~,待会要用,没有的话,直接复刻我这个 hello world,也行。


1)Pipeline 简介

Pipeline,简单来说,就是一套运行在 Jenkins 上的工作流框架,将原来独立运行于单个或者多个节点 的任务连接起来,实现单个任务难以完成的复杂流程编排和可视化的工作

看到这个概念大家应该也能猜到,它的最佳实践应当是微服务部署~

2)使用Pipeline 优点

(来自翻译自官方文档):

代码:Pipeline以代码的形式实现,通常被检入源代码控制,使团队能够编辑,审查和迭代其传送流程。

持久:无论是计划内的还是计划外的服务器重启,Pipeline都是可恢复的。

可停止:Pipeline可接收交互式输入,以确定是否继续执Pipeline。

多功能:Pipeline支持现实世界中复杂的持续交付要求。它支持fork/join、循环执行,并行执行任务的功能。

可扩展:Pipeline插件支持其DSL的自定义扩展 ,以及与其他插件集成的多个选项。

3)如何创建 Jenkins Pipeline

Pipeline 脚本是由 Groovy 语言实现的,但是我们没必要单独去学习

Groovy Pipeline 支持两种语法:Declarative(声明式)和 Scripted Pipeline(脚本式)语法

Pipeline 也有两种创建方法:

  • 可以直接在 Jenkins 的 Web UI 界面中输入脚本;
  • 也可以通过创建一 个 Jenkinsfile 脚本文件放入项目源码库中。(我们一般都推荐使用在 Jenkins 中直接从源代码控制(SCM) 中直接载入 Jenkinsfile Pipeline 这种方法)。

4)本文的大致思路

这篇文章的思路:我是将总的 Jenkins 脚本文件,一步一步拆出来讲解

  1. 创建 Pipeline 任务
  2. 从 Github 拉取代码
  3. 使用 Maven 打包编译
  4. 打包成镜像,发布到镜像仓库或私有仓库(这一步图方便省去了~,代码中其实是有的)
  5. 停止旧容器,删除旧版本镜像
  6. 拉取镜像 (从私服或者是如我演示的一样,从阿里云拉取)
  7. 运行容器

二、创建 Pipeline 任务

多打开一个 Jenkins 页面,打开管理凭据页面

image.png

(图片说明:点击打开管理凭据管理界面)

image.png

(图片说明:拿到Github 的唯一标识,稍后要用到)

image.png

(图片说明:创建一个 pipeline任务)

image.png

(图片说明:配置 Github 项目路径,其实可以省去的,只是我恰巧填了,就写下来了哈哈)

三、脚本的总体框架

我是一步一步的去完善的,也是一步一步测试的,为了能让大家更清晰一些,不要嫌我如此啰嗦。

脚本文件大致是这样的,我们之后会一步一步进行填充

 pipeline {
     agent any
     stages {
         stage('拉取代码') {
             steps {
              echo '拉取代码'
             }
         }
         stage('编译构建') {
             steps {
              echo '编译构建'
             }
         }
          stage('项目部署') {
               steps {
                 echo '项目部署'
             }
         }
     }
 }

Node:节点,一个 Node 就是一个 Jenkins 节点,Master 或者 Agent,是执行 Step 的具体运行 环境,后续讲到Jenkins的Master-Slave架构的时候用到。

Stage:阶段,一个 Pipeline 可以划分为若干个 Stage,每个 Stage 代表一组操作,比如: Build、Test、Deploy,Stage 是一个逻辑分组的概念。

Step:步骤,Step 是最基本的操作单元,可以是打印一句话,也可以是构建一个 Docker 镜像, 由各类 Jenkins 插件提供,比如命令:sh ‘make’,就相当于我们平时 shell 终端中执行 make 命令 一样。


先说说这个代码该放在那里:在配置任务界面划到最底部

image.png

本篇文章是基于这种方式的。

为啥呢

因为简单,咱们学的时候,就是从浅至深,因为这样在这个学习的过程中,它能给你正向反馈,不会直接开始就被劝退了~

如果是想要了解Jenkins 放在源码文件中的那种方式,可能需要等到下一篇文章。

这个简单的脚本文件的结果应该如下:

image.png

Jenkins Pipeline 流水线方式部署 SpringBoot 项目2:https://developer.aliyun.com/article/1394468


目录
相关文章
|
7月前
|
安全 Java 持续交付
如何实现上传jar直接部署成功,这篇文章直接带你上手springboot实现jar包热更新!
本文详细讲解了在Spring Boot应用中实现Jar包热更新的实践方法。通过自定义类加载器(`HotClassLoader`),动态加载和卸载指定目录下的Jar包,结合Spring Bean动态注册机制,使新加载的类能够被Spring容器管理。同时,提供了文件上传接口,方便用户手动触发Jar包更新。文章还强调了安全性、依赖管理和线程安全等注意事项,并给出了测试步骤和总结,帮助开发者高效实现热更新功能,减少服务中断和提升开发效率。
|
9月前
|
XML Java 应用服务中间件
SpringBoot-打包&部署
SpringBoot 项目支持两种打包方式:WAR 包和 JAR 包。JAR 包内置 Tomcat,可直接运行;WAR 包需部署在外部 Tomcat 上。JAR 包通过 `mvn clean package` 打包并用 `java -jar` 运行,支持后台运行和 JVM 参数配置。WAR 包需修改 pom.xml 为 war 类型,移除嵌入式 Tomcat 依赖,添加 servlet-api,并继承 `SpringBootServletInitializer`。配置文件可通过外部 application.yml 覆盖,默认优先级高于 JAR 内部配置。
743 17
SpringBoot-打包&部署
|
4月前
|
Java Linux 网络安全
Linux云端服务器上部署Spring Boot应用的教程。
此流程涉及Linux命令行操作、系统服务管理及网络安全知识,需要管理员权限以进行配置和服务管理。务必在一个测试环境中验证所有步骤,确保一切配置正确无误后,再将应用部署到生产环境中。也可以使用如Ansible、Chef等配置管理工具来自动化部署过程,提升效率和可靠性。
494 13
|
7月前
|
前端开发 Java 物联网
智慧班牌源码,采用Java + Spring Boot后端框架,搭配Vue2前端技术,支持SaaS云部署
智慧班牌系统是一款基于信息化与物联网技术的校园管理工具,集成电子屏显示、人脸识别及数据交互功能,实现班级信息展示、智能考勤与家校互通。系统采用Java + Spring Boot后端框架,搭配Vue2前端技术,支持SaaS云部署与私有化定制。核心功能涵盖信息发布、考勤管理、教务处理及数据分析,助力校园文化建设与教学优化。其综合性和可扩展性有效打破数据孤岛,提升交互体验并降低管理成本,适用于日常教学、考试管理和应急场景,为智慧校园建设提供全面解决方案。
465 70
|
4月前
|
Prometheus 监控 Cloud Native
Docker 部署 Prometheus 和 Grafana 监控 Spring Boot 服务
Docker 部署 Prometheus 和 Grafana 监控 Spring Boot 服务实现步骤
499 0
|
10月前
|
JavaScript 搜索推荐 Java
基于SpringBoot+Vue实现的家乡特色推荐系统设计与实现(源码+文档+部署)
面向大学生毕业选题、开题、任务书、程序设计开发、论文辅导提供一站式服务。主要服务:程序设计开发、代码修改、成品部署、支持定制、论文辅导,助力毕设!
|
10月前
|
JavaScript Java 测试技术
基于SpringBoot+Vue实现的高校食堂移动预约点餐系统设计与实现(源码+文档+部署)
面向大学生毕业选题、开题、任务书、程序设计开发、论文辅导提供一站式服务。主要服务:程序设计开发、代码修改、成品部署、支持定制、论文辅导,助力毕设!
|
弹性计算 运维 Serverless
项目管理和持续集成系统搭建问题之云效流水线支持阿里云产品的企业用户如何解决
项目管理和持续集成系统搭建问题之云效流水线支持阿里云产品的企业用户如何解决
214 1
项目管理和持续集成系统搭建问题之云效流水线支持阿里云产品的企业用户如何解决
|
敏捷开发 Java 测试技术
阿里云云效产品使用合集之如何下载流水线构建过程中生成的jar
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
敏捷开发 测试技术 持续交付
阿里云云效产品使用合集之如何限制在本地的构建主机创建的流水线的并发数
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。

推荐镜像

更多