Jenkins流水线部署Maven项目

使用Jenkins的流水线功能,构建部署Java Maven项目,步骤很简单但是不少细节需要注意。

一、安装

Jenkins的安装步骤和流程就不具体描述,这里主要介绍一下安装时要注意的几个问题。

1、Jenkins尽量安装最新的几个版本,否则安装完成后在Jenkins页面安装插件的过程中会频频报错,很多插件都只支持最新几个版本的Jenkins,除非手动下载旧版本的插件手动安装,但是这样会非常麻烦。

2、目前Jenkins最新的几个版本需要jdk17,如果服务器或者虚机上的jdk不是jdk17并且不能重装jdk的情况,可以使用docker来安装Jenkins。

3、插件问题,Jenkins本身功能很少,或者说Jenkins只是一个插件集成工具,安装完成后需要安装很多插件才能正常使用。例如:git插件、jdk插件、Maven插件、ssh插件等等。


二、插件安装和配置

Jenkins构建Maven项目的大致流程原理如下:
通过git拉取远程仓库的源码(需要git插件并配置远程git仓库访问凭证) —> 执行Maven构建命令编译、打包项目(需要jdk、Maven插件并配置) —> 发送打包好的jar到需要部署的远程服务器上—> 执行远程服务器上的启动命令或者脚本(需要ssh插件并配置远程服务器的用户名密码)。这些步骤都需要对应的插件支持。

2.1 插件安装:点击系统管理-》插件管理-》Available plugins,输入需要安装的插件,插件名称这里就不细说了,网上到处都是。

2.2 jdk、Maven安装配置:点击系统管理-》全局工具配置 即可进入配置页面,按要求填写即可。

值得注意的是:拿jdk来举例,安装jdk有2种方式,自动安装和手动安装,如果选择自动安装,Jenkins一般会在执行流水线过程中自动去安装你勾选版本的jdk。

一般建议手动安装,安装方式也很简单,下载好对应版本的jdk,解压到指定目录即可,然后在配置页面填写安装路径。可以安装多个版本的jdk然后按需使用,不需要配置环境变量。

Maven安装配置也是一样,可自动安装和手动安装,如果手动安装:下载安装包,解压到指定目录,如果在页面配置对应的路径即可。同样可以安装多个,然后配置流水线的时候按需选择使用。


配置Maven的settings文件路径。

2.3 git安装配置:选择自动安装即可。

2.4 git凭证配置:点击系统管理-》凭证管理

填写git仓库的用户名密码即可,用于拉取git上的项目代码。

2.5 ssh配置:点击系统管理-》系统管理-》系统配置

可配置多个,后面配置流水线过程中按需选择使用。


 

三、流水线配置
 

注意:如果某些功能没有,那就是缺少插件,网上搜索一下相关插件名称,在插件安装页面搜索安装,安装后重启Jenkins即可。


如果已经有配置好的流水线,可以使用复制功能复制后再按需修改。

填写基本配置参数

参数化构建,选择分支构建
该功能需要安装一个插件(GitHub Branch Source)

选择合适的参数,这里选择通过分支来构建,配置完成后,可选择指定分支来构建项目。

参数化构建的高级配置

配置好后效果如下:
可选择对应的分支或tag构建

有没有发现,在分支前面有前缀(refs/heads/),可以使用正则表达式过滤掉,表达式:refs/heads/(.*),相对于去掉前缀。

配置编译项目需要的jdk版本

源码管理配置
        告诉Jenkins你的项目代码在哪里


build构建配置
指定pom文件,指定Maven构建命令


Post Steps构建后步骤配置

选择(Run only if build succeeds)构建成功后才能进行下一步。

表示构建成功后把文件发送到目标服务器并执行相关命令。如果需要,可以配置多个目标服务器,集群部署就需要配置多个。

ssh server详细配置

最后点击保存即可。

注意:如果某些功能没有,那就是缺少插件,网上搜索一下相关插件名称,在插件安装页面搜索安装,安装后重启Jenkins即可。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

数据库调优-连接池优化

先贴下连接池的相关配置: 连接池参数配置: 字段含义Max Number of Connections最大连接数;做性能测试时,可以填 0 。在开发的项目中按实际代码填写,默认是 20 。Max Wait(ms)在连接池中取回连接最大等待时间&#xf…

在51单片机里面学习C语言

在开始前我有一些资料,是我根据网友给的问题精心整理了一份「C语言的资料从专业入门到高级教程」, 点个关注在评论区回复“888”之后私信回复“888”,全部无偿共享给大家!!! 说出来你们可能都…

程序的环境和预处理#define #ifdefine

文章目录 预编译 预处理做的事情把#include<>里面的内容执行了注释删除&#xff0c;使用空格替换注释define 把符号统统替换为值 编译阶段做的事情链接做的事情运行环境预处理(预处理)详解预定义符号__FILE____LINE____DATE__ __TIME__写日志文件__FUNCTION__ #define预处…

克服 Prometheus 单值数据模型的局限性:GreptimeDB 的新路径

引言 Prometheus 已经成为监控和报警生态系统的基石&#xff0c;在高效、直接地处理实时指标&#xff08;Metric&#xff09;方面有着强大的表现。Prometheus 的核心是一个包含单个值和一系列标签的数据模型。这种设计在提升简单性和适应性的同时&#xff0c;也带来了一些挑战…

Ftp笑脸漏洞(VSFTPD 2.3.4)复现(后门漏洞)

Ftp笑脸漏洞&#xff08;VSFTPD 2.3.4&#xff09;复现&#xff08;后门漏洞&#xff09; 一、原理二、复现准备三、漏洞复现四、Metasploit利用脚本复现 一、原理 vsftpd 是“ very secure FTP daemon ”的缩写&#xff0c;安全性是它的一个最大的特点。 vsftpd是一个 UNIX 类…

Python专题:八、列表(3)

列表的场景应用 统计和肺考试成绩 >不支持字符串和整数之间的比较 sort()函数从小到大排列 reverse&#xff08;&#xff09;函数从大到小排列 列表推导式 字符串列表的转化&#xff0c;join&#xff08;&#xff09;函数列表生成字符串 split&#xff08;&#xff09;函…

Android system property运作流程源码分析

一.序 前文分析了build.prop这个系统属性文件的生成&#xff0c;每个属性都有一个名称和值&#xff0c;他们都是字符串格式。属性被大量使用在Android系统中&#xff0c;用来记录系统设置或进程之间的信息交换。属性是在整个系统中全局可见的。每个进程可以get/set属性&#x…

Kafka应用Demo:生产者自定义消息分区方法

背景 没有设置消息键时Kafka默认的分区算法是轮循&#xff0c;设置了消息键将按消息键的hashcode计算分区值。这种方法可以保证未设置消息键时各分区负载均衡。也可以保证设置消息键后的消息放到同一个分区发送&#xff0c;以保证消息按顺序消费。 但在某些业务场景下&#xff…

python_5

# 制作一个注册登录模块 # 注册&#xff1a;将用户填入的账户和密码保存到一个文件(users.bin) # 登陆&#xff1a;将用户填入账户密码和users.bin中保存的账户密码进行比对,如果账户和密码完全相同 那么登录成功&#xff0c;否则登录失败 import hashlib import json import o…

Vue3知识总结-1

前面学习一段时间的前端&#xff0c;但是没有进行过太多的练习&#xff0c;并且对于里面一些重要的知识点也没有去着重的记忆&#xff0c;所以打算在学习Vue3的时候&#xff0c;做一些笔记&#xff0c;方便后面翻看。这个笔记会对于学习一些做一些&#xff0c;而不是一个整体的…

Maven打包异常javac <options> <source files>

今天发现Maven打包时候出现的异常&#xff0c;异常信息如下 一开始以为是什么代码问题呢&#xff0c;但是奇怪的是项目是可以正常运行的。也就说代码没问题。 那为什么Maven 打包编译就报错&#xff1f; 首先查看Maven 配置&#xff0c;配置好像也没有什么异常的地方。 再看…

Spring Boot | Spring Boot 整合“ 邮件任务“ 实现

目录: Spring Boot 整合" 邮件任务" 实现 :一、发送 "纯文本邮件" :(1) 添加 "邮件服务" 依赖启动器(2) 添加 "邮件服务" 配置信息(3) 定制 "邮件发送服务"(4) "纯文本" 邮件发送 测试效果 二、发送 带 "附件…

DSOX4054A 示波器:500 MHz,4 个模拟通道

DSOX4054A 示波器 500 MHz 4 个模拟通道 100 万波形/秒捕获率 4000 X 系列拥有一系列引以为傲的配置&#xff0c;包括采用了电容触摸屏技术的 12.1 英寸显示屏、InfiniiScan 区域触摸触发、100 万波形/秒捕获率、MegaZoom IV 智能存储器技术和标配分段存储器。 主要特点 —…

信息技术自主可控的意义,针对国产化替换,服务器虚拟化或比公有云更具优势

我们之前在文章《博通收购VMware后&#xff0c;经销商和用户如何应对&#xff1f;新出路&#xff1a;虚拟化国产替代&#xff0c;融入信创云生态》中提到&#xff1a; 从信创整体发展和政策标准来看&#xff0c;供应商必须满足两个条件&#xff1a;一是融入国产信息技术生态&am…

Win10 WSL2 Ubuntu 22.04 配置深度学习环境

文章目录 WSL安装Anaconda下载Anaconda安装包安装配置conda命令conda换国内源conda初始化shell环境conda init手动源激活脚本&#xff1a; 安装Windows上的NVIDIA GPU驱动WSL安装CUDA Toolkit安装12.1版本环境配置报错1报错2 内存不足导致安装崩溃问题描述问题分析问题解决 WSL…

PHP 框架安全:ThinkPHP 序列 漏洞测试.

什么是 ThinkPHP 框架. ThinkPHP 是一个流行的国内 PHP 框架&#xff0c;它提供了一套完整的安全措施来帮助开发者构建安全可靠的 web 应用程序。ThinkPHP 本身不断更新和改进&#xff0c;以应对新的安全威胁和漏洞。 目录&#xff1a; 什么是 ThinkPHP 框架. ThinkPHP 框架…

C++基础中的存储类别

存储的类别是变量的属性之一&#xff0c;C语言定义了4种变量的存储类别&#xff0c;分别是auto变量、static变量、register变量和extern变量。以下重点介绍这几种类型。 一、auto变量 auto变量是C默认的存储类型。函数内未加存储类型说明的变量均被称为自动变量&#xff0c;即…

深入理解Django:中间件与信号处理的艺术

title: 深入理解Django&#xff1a;中间件与信号处理的艺术 date: 2024/5/9 18:41:21 updated: 2024/5/9 18:41:21 categories: 后端开发 tags: Django中间件信号异步性能缓存多语言 引言 在当今的Web开发领域&#xff0c;Django以其强大的功能、简洁的代码结构和高度的可扩…

Vue 中动态与静态处理 Element UI/Element Plus 组件禁用状态样式

目录 一、静态样式修改 - 使用 ::v-deep 穿透组件样式二、选择器的优先级和匹配顺序三、动态添加样式 - 使用 Vue 实例属性&#xff08;非推荐&#xff09;四、区别总结五、应用场景总结 本文主要探讨在 Vue.js 项目中&#xff0c;特别是搭配 Element UI 或 Element Plus 组件库…

C语言队列的含义与队列数据操作代码详解!

引言&#xff1a;于本篇博客当中&#xff0c;我们将讲到数据结构——队列的有关知识。而对于这次的队列&#xff0c;我们将会在单链表的基础上实现。 更多有关C语言和数据结构知识详解可前往个人主页&#xff1a;计信猫 一&#xff0c;队列的含义 队列是一种特殊的线性表&#…