工作两年半,终于学会了Jenkins部署Maven项目

news2025/3/1 9:48:44

上期我们讲了Linux部署Jenkins
Linux安装Jenkins(Java11最新版)
这期我们来讲的是使用Jenkins部署一个maven项目

文章目录

  • 👮所需要的环境(必须要有,否则不能进行下一步)
    • 🙋第一步,安装maven插件
    • 👰第二步,配置Git
      • 🙎查看git路径
      • 🙍配置git
    • 🙇第三步,配置jdk
    • 💑第四步,配置maven
    • 💆第五步,新建一个maven项目
      • 💇 如果你没有执行第一步是没有这个选项的
    • 💅第六步,配置源码仓库地址
    • 👦第七步,立即构建
      • 👧这里的目的是为了添加工作空间
    • 👩 第七步,配置pom文件路径
      • 👨这个pom文件是你工作空间里面的相对路径
    • 👶第八步,执行构建
      • 👵构建成功后你会发现maven项目已经被打成了一个jar包
    • 👴第九步,使Jenkins自动运行jar包
      • 👱添加构建后的动作
      • 👲这个脚本的意思就是进入start.sh脚本`并且`不杀掉后面的job`并且`执行启动脚本
    • 👳 第十步,构建
      • 👷看到左下角绿色标签就说明构建成功了

👮所需要的环境(必须要有,否则不能进行下一步)

Jenkins:Linux安装Jenkins(Java11最新版)
Git:Linux安装Git(图文解说详细版)
Maven:Linux安装Maven(图文解说详细版)
JDK: Linux安装Java环境(OracleJDK)

默认的Jenkins是不能构建maven项目的

🙋第一步,安装maven插件

在这里插入图片描述

👰第二步,配置Git

🙎查看git路径

which git

在这里插入图片描述

🙍配置git

在这里插入图片描述

🙇第三步,配置jdk

在这里插入图片描述

💑第四步,配置maven

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

💆第五步,新建一个maven项目

在这里插入图片描述

💇 如果你没有执行第一步是没有这个选项的

在这里插入图片描述

💅第六步,配置源码仓库地址

在这里插入图片描述

👦第七步,立即构建

👧这里的目的是为了添加工作空间

在这里插入图片描述

在这里插入图片描述

👩 第七步,配置pom文件路径

在这里插入图片描述

👨这个pom文件是你工作空间里面的相对路径

在这里插入图片描述

👶第八步,执行构建

在这里插入图片描述

👵构建成功后你会发现maven项目已经被打成了一个jar包

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

👴第九步,使Jenkins自动运行jar包

👱添加构建后的动作

在这里插入图片描述

cd /root/.jenkins/workspace/maven-demo && export BUILD_ID=dontKillMe && sh start.sh restart 

👲这个脚本的意思就是进入start.sh脚本并且不杀掉后面的job并且执行启动脚本

start.sh 脚本内容如下,按自己的需求修改

#!/bin/sh
start(){
echo 'Start the program '
echo '-------Starting-------'
nohup java -jar /root/.jenkins/workspace/maven-demo/apprentice/target/apprentice-1.0.0.jar  > /root/.jenkins/workspace/maven-demo/apprentice/target/log.txt &
echo '启动成功'
}
stop(){
echo "关闭程序:"
pid=`ps -ef |grep apprentice-1.0.0.jar|awk '{print $2}'`
echo '旧程序PID:'$pid
if [ -n "$pid" ]
then
kill -9 $pid
echo "关闭成功"
fi
}

#根据输入参数,选择执行对应方法,不输入则执行使用说明
case "$1" in
  "start")
    start
    ;;
  "stop")
    stop
    ;;
  "restart")
    stop
    start
    ;;
esac

👳 第十步,构建

在这里插入图片描述

👷看到左下角绿色标签就说明构建成功了

并且成功访问到了我们项目的swagger

在这里插入图片描述

至此,Jenkins构建一个maven项目就到此结束了,博主创作不易,三连大大支持!

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

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

相关文章

02 运算符

目录 第一章:概述 第二章:算术运算符 2.1 概述 2.2 应用示例 2.3 号的两种用法 2.4 自增自减运算 2.4.1 概述 2.4.2 单独使用 2.4.3 复合使用 第三章:赋值运算符 3.1 概述 3.2 应用示例 第四章:关系运算符&#xff0…

vue3.0找不到模块“./App.vue”或其相应的类型声明

vue3报错提示 找不到模块“/App.vue”或其相应的类型声明 情况一、vue3.0js 报错原因:javascript只能理解.js文件,无法理解.vue文件。 解决方案:根目录新建jsconfig.json {"compilerOptions": {"baseUrl": "./&qu…

被取消的AP考试到底是什么嘞?

最近,好多考试都延期或取消了,美国大学理事会(College Board)也发布公告,宣布受疫情影响,上海、北京等地的AP考试正式取消,不提供线上考试的机会,而且不会安排后续补考。 这条消息惊…

芯片漫游指南(5)-- UVM寄存器

目录1.寄存器模型概览1.1 概述1.2 uvm_reg相关概念1.3 MCDF寄存器模型1.4 寄存器建模1.5 模型使用流程2.寄存器模型集成2.1 总线UVC的实现2.2 纵向UVC的示例3.寄存器模型的常规方法3.1 mirror、desired和actual value3.2 prediction的分类3.3 uvm_reg的访问方法3.4 mem与reg的联…

python扩展实现方法--python与c混和编程

大部分的Python的扩展都是用C语言写的,但也很容易移植到C中。 一般来说,所有能被整合或者导入到其它python脚本的代码,都可以称为扩展。 扩展可以用纯Python来写,也可以用C或者C之类的编译型的语言来扩展。 就算是相同的架构的两…

Spring Boot学习篇(三)之通用mapper的使用(oracle版)

Spring Boot学习篇(三)之通用mapper的使用(oracle版) 1 配置pom.xml <parent><artifactId>spring-boot-starter-parent</artifactId><groupId>org.springframework.boot</groupId><version>2.7.2</version></parent> <de…

概念辨析|电子文件单轨制与电子档案单套制

电子文件单轨制和电子档案单套制是档案业务中的重要概念&#xff0c;在建设数字中国的时代背景下&#xff0c;厘清“套”与“轨”的区别和联系是革新档案工作的基础 产生背景 随着信息技术的不断发展和政务信息化的持续推进&#xff0c;电子文件逐渐在业务工作中大量出现&…

从工具到实践:如何在GitHub上保障开源项目安全?

1998年&#xff0c;Christine Peterson创造了 “开源软件”这个词。她解释道&#xff1a;“这是刻意为之&#xff0c;为了让其他人更容易理解这个领域”。同年&#xff0c;O’Reilly组织了首届“开源峰会”。 开源软件受到更多人青睐原因在于&#xff0c;用户对软件拥有更多的…

【圣诞节】简单代码实现圣诞树|圣诞贺卡 | 快来为心爱的她送上专属的圣诞礼物叭~

圣诞节马上就要到了&#xff0c;不知道给自己喜欢的人准备什么样的惊喜吗&#xff1f;作为一名程序员&#xff0c;当然是用编程制作专属于她or他的圣诞树&#xff01; 目录 &#x1f384;圣诞树 ✨3D圣诞树 代码块 打开方式 修改位置 效果展示 ✨音乐律动圣诞树 代码块…

详解 Vue 过渡 transition 动画 animation 并结合第三方库 animation.css 和 gsap

transition vue过渡组件 标签自带类名 触发时机默认类名 自定义类名 <transition name"xxx"> 自定义行内式类名 方便结合第三方库 transition 钩子 接收参数el enter 和leave 第二个参数 done 可以 决定 after-enter after-leave 的 周期内的执行时机 v-…

YonBuilder移动开发平台 AVM框架 封装虚拟数字键盘组件

AVM&#xff08;Application-View-Model&#xff09;前端组件化开发模式基于标准Web Components组件化思想&#xff0c;提供包含虚拟DOM和Runtime的编程框架avm.js以及多端统一编译工具&#xff0c;完全兼容Web Components标准&#xff0c;同时兼容Vue和React语法糖编写代码&am…

Codeforces Round #697 (Div. 3) E. Advertising Agency

翻译&#xff1a; 玛莎在一家广告公司工作。为了推广新品牌&#xff0c;她想和一些博主签约。玛莎总共有&#x1d45b;个不同的博主。编号为&#x1d456;的博主拥有&#x1d44e;&#x1d456;名粉丝。 由于玛莎的预算有限&#xff0c;她只能与&#x1d458;不同的博主签约。…

LeetCode动态规划—跳跃游戏从跳到头到跳最少下跳到头(45、55)

跳跃游戏跳跃游戏跳跃游戏Ⅱ跳跃游戏 一个下标对应的值为3&#xff0c;那证明这个位置可以跳到前后3个位置的下标处。&#xff08;3均可达&#xff09; 如果依次遍历完这个数组&#xff0c;有下标在跳跃过程中最远位置仍然不可达&#xff0c;即证明无法到达最后一个位置。 可以…

js实现九宫格抽奖功能

分享一下js的九宫格抽奖功能 首先是html部分&#xff1a; <div class"box"><div class"div2">短裙</div><div class"div3">口红</div><div class"div4">草莓</div><div class"div…

【vue】控制台中如何移除数组arr中的值?如何给数组arr中放值?

移除数组arr属性中的值&#xff1a;vm.arr.shift() 新增数组arr属性中的值&#xff1a;vm.arr.push(‘属性值’) 移除atguigu3样式后效果&#xff1a; 向数组arr中添加样式值后效果&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta…

FlinkSql开窗实例:消费kafka写入文本

前言 以前写Flink从kafka入hdfs因为业务需求和老版本缘故都是自定义BucketSink入动态目录中&#xff0c;对于简单的需求可以直接用Flink SQL API进行输出。Flink版本1.13.1。 Flink官网示例 准备 本地下载个kafka&#xff08;单机即可&#xff09;&#xff0c;新建个桌面目…

Unreal 读写自定义配置文件

基础 首先需要自定义一个继承自UObject的类&#xff0c;UCLASS加上config标志 UCLASS(config MyClass) class UMyClass: public UObject将想要和配置文件交互的属性&#xff0c;UFUNCTION加上Config标志 UPROPERTY(Config, EditAnywhere) float TestP;之后只要配置文件内存…

【日常系列】LeetCode《21·综合应用3》

数据规模->时间复杂度 <10^4 &#x1f62e;(n^2) <10^7:o(nlogn) <10^8:o(n) 10^8<:o(logn),o(1) 内容 lc 217 &#xff1a;存在重复元素 https://leetcode.cn/problems/contains-duplicate/ 提示&#xff1a; 1 < nums.length < 10^5 -10^9 < nums[…

Python基础教程(2)——列表、元组、字典、集合、斐波纳契数列、end 关键字、条件控制、循环语句

1.列表 &#xff08;1&#xff09;删除列表的元素 list [Google, Runoob, 1997, 2000] print ("原始列表 : ", list) del list[2] print ("删除第三个元素 : ", list)&#xff08;2&#xff09;Python列表脚本操作符 &#xff08;3&#xff09;嵌套列表…

Arco 属性

文章目录Arco介绍1. 简介1.1 背景1.2 运行环境1.3 浏览器兼容性2. 设计价值观2.1 清晰2.2 一致2.3 韵律2.4 开放3. 设计原则3.1 及时反馈3.2 贴近现实3.3 系统一致性3.4 防止错误发生3.5 遵从习惯3.6 突出重点3.7 错误帮助3.8 人性化帮助4. 界面总体风格4.1 页面风格4.1.1 主色…