Jenkins流水线部署springboot项目

文章目录

  • Jenkins流水线任务介绍
  • Jenkins流水线任务
    • 构建Jenkins流水线任务
    • Groovy脚本
    • Jenkinsfile实现
  • Jenkins流水线任务实现
    • 参数化构建
    • 拉取Git代码
    • 构建代码
    • 制作自定义镜像并发布

Jenkins流水线任务介绍

之前采用Jenkins的自由风格构建的项目,每个步骤流程都要通过不同的方式设置,并且构建过程中整体流程是不可见的,无法确认每个流程花费的时间,并且问题不方便定位问题。

Jenkins的Pipeline可以让项目的发布整体流程可视化,明确执行的阶段,可以快速的定位问题。并且整个项目的生命周期可以通过一个Jenkinsfile文件管理,而且Jenkinsfile文件是可以放在项目中维护。

所以Pipeline相对自由风格或者其他的项目风格更容易操作。

Jenkins流水线任务

构建Jenkins流水线任务

  • 构建Jenkins流水线任务
    在这里插入图片描述
  • 生成Groovy脚本

在这里插入图片描述

  • 构建后查看视图

在这里插入图片描述

Groovy脚本

  • Groovy脚本基础语法
// 所有脚本命令包含在pipeline{}中
pipeline {  // 指定任务在哪个节点执行(Jenkins支持分布式)agent any// 配置全局环境,指定变量名=变量值信息environment{host = '192.168.11.11'}// 存放所有任务的合集stages {// 单个任务stage('任务1') {// 实现任务的具体流程steps {echo 'do something'}}// 单个任务stage('任务2') {// 实现任务的具体流程steps {echo 'do something'}}// ……}
}
  • 编写例子测试
pipeline {agent any// 存放所有任务的合集stages {stage('拉取Git代码') {steps {echo '拉取Git代码'}}stage('检测代码质量') {steps {echo '检测代码质量'}}stage('构建代码') {steps {echo '构建代码'}}stage('制作自定义镜像并发布Harbor') {steps {echo '制作自定义镜像并发布Harbor'}}stage('基于Harbor部署工程') {steps {echo '基于Harbor部署工程'}}}
}

在这里插入图片描述

  • 查看效果

在这里插入图片描述

Ps:涉及到特定脚本,Jenkins给予了充足的提示,可以自动生成命令

在这里插入图片描述

Jenkinsfile实现

Jenkinsfile方式需要将脚本内容编写到项目中的Jenkinsfile文件中,每次构建会自动拉取项目并且获取项目中Jenkinsfile文件对项目进行构建

  • 配置pipeline

在这里插入图片描述

  • 准备Jenkinsfile

在这里插入图片描述

  • 测试效果

在这里插入图片描述

Jenkins流水线任务实现

参数化构建

添加参数化构建,方便选择不的项目版本

在这里插入图片描述

拉取Git代码

通过流水线语法生成Checkout代码的脚本

在这里插入图片描述
将*/master更改为标签${tag}

pipeline {agent anystages {stage('拉取Git代码') {steps {checkout scmGit(branches: [[name: '${tag}']], extensions: [], userRemoteConfigs: [[credentialsId: 'gitee', url: 'https://gitee.com/qfxcoffee/shield.git']])}}}
}

在这里插入图片描述

构建代码

pipeline {agent anystages {stage('拉取Git代码') {steps {checkout scmGit(branches: [[name: '${tag}']], extensions: [], userRemoteConfigs: [[credentialsId: 'gitee', url: 'https://gitee.com/qfxcoffee/shield.git']])}}stage('构建代码') {steps {sh 'cd arthas-study && /var/jenkins_home/maven/bin/mvn clean package -DskipTests'}}}
}

在这里插入图片描述

制作自定义镜像并发布


pipeline {agent anyenvironment{harborHost = '192.168.56.112:80'harborRepo = 'repository'harborUser = 'admin'harborPasswd = 'Harbor12345'}stages {stage('拉取Git代码') {steps {checkout scmGit(branches: [[name: '${tag}']], extensions: [], userRemoteConfigs: [[credentialsId: 'gitee', url: 'https://gitee.com/qfxcoffee/shield.git']])}}stage('构建代码') {steps {sh 'cd arthas-study && /var/jenkins_home/maven/bin/mvn clean package -DskipTests'}}stage('制作自定义镜像并发布Harbor') {steps {sh '''cd arthas-study/dockermv ../target/arthas-study.jar ./arthas-study.jardocker build -t ${JOB_NAME}:${tag} ./'''sh '''docker login -u ${harborUser} -p ${harborPasswd} ${harborHost}docker tag ${JOB_NAME}:${tag} ${harborHost}/${harborRepo}/${JOB_NAME}:${tag}docker push ${harborHost}/${harborRepo}/${JOB_NAME}:${tag}'''}}}
}

在这里插入图片描述
在这里插入图片描述

  • 生成Publish Over SSH脚本
pipeline {agent anyenvironment{harborHost = '192.168.56.112:80'harborRepo = 'repository'harborUser = 'admin'harborPasswd = 'Harbor12345'port = 8080host_port = 8888}stages {stage('拉取Git代码') {steps {checkout scmGit(branches: [[name: '${tag}']], extensions: [], userRemoteConfigs: [[credentialsId: 'gitee', url: 'https://gitee.com/qfxcoffee/shield.git']])}}stage('构建代码') {steps {sh 'cd arthas-study && /var/jenkins_home/maven/bin/mvn clean package -DskipTests'}}stage('制作自定义镜像并发布Harbor') {steps {sh '''cd arthas-study/dockermv ../target/arthas-study.jar ./arthas-study.jardocker build -t ${JOB_NAME}:${tag} ./'''sh '''docker login -u ${harborUser} -p ${harborPasswd} ${harborHost}docker tag ${JOB_NAME}:${tag} ${harborHost}/${harborRepo}/${JOB_NAME}:${tag}docker push ${harborHost}/${harborRepo}/${JOB_NAME}:${tag}'''}}stage('目标服务器拉取镜像并运行') {steps {sshPublisher(publishers: [sshPublisherDesc(configName: 'testEnv', transfers: [sshTransfer(cleanRemote: false, excludes: '', execCommand: "/usr/bin/deploy.sh $harborHost $harborRepo $JOB_NAME $tag $port $host_port", execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: '', remoteDirectorySDF: false, removePrefix: '', sourceFiles: '')], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: false)])}}}
}

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/831553.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

字符串哈希-最易懂的证明

文章目录 题目题目解析:解题思路:具体算法为什么?举个例子再举个例子 代码: 题目 给定一个长度为 n的字符串,再给定 m个询问,每个询问包含四个整数 l1,r1,l2,r2,请你判断 [l1,r1]和 [l2,r2] 这两…

再学Java基础——反射

Java中的反射(Reflection)是一种强大的工具,它允许程序在运行时检查类、接口、字段和方法的信息,并且允许对这些对象进行实例化、调用等操作。这种能力使Java代码具有高度的动态性和灵活性。 反射的基本概念 反射提供了以下功能…

Baumer工业相机堡盟工业相机如何通过NEOAPISDK获取相机的Statistics图像传输统计信息(C#)

Baumer工业相机堡盟工业相机如何通过NEOAPISDK获取相机的Statistics图像传输统计信息(C#) Baumer工业相机Baumer工业相机NEOAPI SDK和相机Statistics图像传输统计信息的技术背景Baumer工业相机通过NEOAPISDK获取相机的Statistics图像传输统计信息技术1.引…

重看Spring聚焦BeanDefinition分析和构造

目录 一、对BeanDefinition的理解 (一)理解元信息 (二)BeanDefinition理解分析 二、BeanDefinition的结构设计分析 (一)整体结构体会 (二)重要接口和类分析 三、构造 BeanDef…

搭建MongoDB分片集群

文章目录 一、什么是分片二、分片集群1、组件构成2、分片集群内各组件间交互 三、数据如何切分四、分片策略1、哈希分片2、范围分片 五、分片集群架构六、搭建分片集群1、涉及主机2、所有主机安装MongoDB3、分片节点副本集的创建3.1、第一套副本集shard13.1.1、准备存放数据和日…

课时114:sed命令_进阶实践_高阶用法1

2.2.3 高阶用法1 学习目标 这一节,我们从 基础知识、缓存实践、小结 三个方面来学习。 基础知识 简介 对于sed命令来说,除了我们经常使用的模式空间之外,它还支持一个叫暂存空间(Hold Space)的模式,所谓的暂存空间,也就是说&a…

计算机网络期末试题

第一章 概述 一. 单选题(共13题,36.4分) 1. (单选题) 因特网起源于( )网络。 A. ARPANETB. EthernetC. CATVD. CERNET 我的答案: A:ARPANET;正确答案: A:ARPANET; 2.8分 2. (单选题)人们把( )年作为因特网的诞…

从零开始搭建一个vue项目

从零开始搭建一个vue项目 一、环境准备 1.1 安装node.js 选择合适的LTS版本,然后下载安装,安装地址:https://nodejs.org/en/download 在命令行中查看已安装的node.js版本 node -v v14.14.01.2 切换为淘宝的镜像源 解决国内下载慢的问题,…

(五)SQL系列练习题(上)创建、导入与查询 #CDA学习打卡

目录 一. 创建表 1)创建课程表 2)创建学生表 3)创建教师表 4)创建成绩表 二. 导入数据 1)导入课程科目数据 2)导入课程成绩数据 3)导入学生信息数据 4)导入教师信息数据 …

Mac OS 笔记

rvm、Ruby、gem、CocoaPods的安装与卸载 安装rvm curl -fsSL https://get.rvm.io | bash -s stable --ruby --autolibsenable --auto-dotfilesrvm -v # 查看版本安装脚本 /usr/bin/ruby -e "$(curl -fsSL https://cdn.jsdelivr.net/gh/ineo6/homebrew-install/install…

决策树算法

目录 决策树的应用决策树算法分类决策树算法开源实现决策树的使用 决策树是一种常用的数据挖掘方法,它是一种树形结构的算法,用于决策分析和预测。 决策树由节点和分支构成,其中节点分为内部节点和叶节点两种。内部节点表示一个特征或属性&a…

《金融研究》:普惠金融改革试验区DID工具变量数据(2012-2023年)

数据简介:本数据集包括普惠金融改革试验区和普惠金融服务乡村振兴改革试验区两类。 其中,河南兰考、浙江宁波、福建龙岩和宁德、江西赣州和吉安、陕西铜川五省七地为普惠金融改革试验区。山东临沂、浙江丽水、四川成都三地设立的是普惠金融服务乡村振兴…

【bbs02补】注册功能form组件-前端-后端-总结、登录功能(前端、后端、生成验证码)

1 注册功能 1.1 注册功能form组件 1.2 注册功能前端 1.3 注册功能后端 1.4 forms组件和前后端总结 2 登录功能 2.1 登录前端 2.2 生成验证码 1 注册功能 1.1 注册功能form组件 # 注册页面-用户名-密码-确认密码-邮箱-手机号-头像# form组件 可以帮助我们1 快速生成前端页面2 数…

Xamarin.Android项目显示Properties

在 Visual Studio 2022 中,如果您需要调出“Properties”(属性)窗口,您可以使用以下几种方法: 快捷键: 您可以按 F4 快速打开当前选择项的“Properties”窗口。

pytorch笔记:ReplicationPad1d

torch.nn.ReplicationPad1d(padding) 在 PyTorch 中,ReplicationPad1d 是一种用于一维数据的填充层该层通过复制序列的边缘值来增加数据的长度,这在卷积神经网络中常用于保持数据尺寸主要参数 padding 可以是一个整数或一个元组。 如果是一个整数&…

Python 植物大战僵尸

文章目录 效果图项目结构实现思路源代码 效果图 项目结构 实现思路 下面是代码的实现思路: 导入必要的库和模块:首先,我们导入了Python的os、time库以及pygame库,还有植物大战僵尸游戏中用到的各个植物和僵尸的类。 初始化游戏和…

从零开始学AI绘画,万字Stable Diffusion终极教程(一)

【第1期】SD入门 2022年8月,一款叫Stable Diffusion的AI绘画软件开源发布,从此开启了AIGC在图像上的爆火发展时期 率先学会SD的人,已经挖掘出了越来越多AI绘画有趣的玩法 从开始的AI美女、线稿上色、真人漫改、头像壁纸 到后来的AI创意字、AI…

Android性能优化面试题汇总

Android的性能优化涉及多个方面,如启动优化、稳定性优化、内存优化、网络优化、电量优化、安全优化等方面。 一、稳定性优化 1.1 你们做了哪些稳定性方面的优化 随着项目的逐渐成熟,用户基数逐渐增多,DAU持续升高,我们遇到了很多稳定性方面的问题,对于我们技术同学遇到…

如何在 Ubuntu 16.04 上使用 WireGuard 创建点对点 VPN

简介 WireGuard 是一种现代、高性能的 VPN,旨在提供易于使用的同时又具有强大的安全性。WireGuard 专注于在网络接口上使用公钥认证加密来提供安全连接。这意味着,与大多数 VPN 不同,它不强制执行拓扑结构,因此可以通过操纵周围的…

条件依赖性的方法示例

5个条件判断一件事情是否发生,每个条件可能性只有2种(发生或者不发生),计算每个条件对这件事情发生的影响力,条件之间有很强的依赖关系。 例一 如果条件之间有很强的依赖关系,那么简单地计算每个条件独立的…