当前位置: 首页 > news >正文

Docker-安装Jenkins-使用jenkins发版Java项目

文章目录

  • 0.前言
    • 环境背景
  • 1.操作流程
    • 1.1前期准备工作
      • 1.1.1环境变量的配置
    • 1.2使用流水线的方式进行发版
      • 1.2.1新建流水线任务
      • 1.2.2流水线操作
        • 工具tools
        • 步骤stages
          • 步骤1:拉取代码+编译
          • 步骤2:发送文件并启动

0.前言

学海无涯,旅“途”漫漫,“途”中小记,如有错误,敬请指出,在此拜谢!

环境背景

环境版本
电脑MAC M2 max
dockerDocker version 20.10.22, build 3a2c30b
其他此处使用了Docker Desktop

1.操作流程

根据上一篇文章,安装完Jenkins后,即可进行Java项目的配置。对于发版Java项目,旧版本的Jenkins使用插件进行发版。新版本的Jenkins可以使用流水线的方式进行发版。此处两种方式都进行介绍。

1.1前期准备工作

1.1.1环境变量的配置

进入系统管理,配置maven、jdk、ssh参数。

在这里插入图片描述

(1)配置maven、jdk
进入全局工具配置,就能看见maven和jdk的配置。此处可以使用你本地的配置,也可以让jenkins自己安装。按照提示自己安装就行。当然,此处也可以配置maven的setting.xml和其他的插件。此处不做多余赘述,如出现问题可以私聊我。

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

(2)配置ssh服务属性

进入系统配置,页面中搜索ssh,能找到Publish over SSH的位置(如果未找到,回到系统管理才到,会找到插件管理。可以在插件管理里面安装Publish over SSH)
在这里插入图片描述

1.2使用流水线的方式进行发版

1.2.1新建流水线任务

点击新建任务,输入名称,选择流水线,点击确定

在这里插入图片描述

1.2.2流水线操作

找到下方流水线,便能看到流水线内容输入框,这里是最重要的地方。(如果脚本框不显示,就点击保存后,重新进入配置编辑,就会显示了)

在这里插入图片描述

此处粘贴我的流水线脚本全文,我在分步进行解释。

pipeline {agent anytools {maven "maven3.8.7"}stages {stage('服务编译') {steps {git credentialsId: 'xxx', url: 'xxxx'sh "mvn -s /usr/environment/maven/settings-docker.xml clean package -Dmaven.test.skip=true"}}stage("服务传输、启动"){steps {# xxx}}}}

工具tools

tools部分,是配置maven,这块如果使用系统默认的maven的话,就可以删了。如果需要特定maven的话,就在jenkins配置maven后,在此处配置maven的名称。代码如下:

tools {maven "maven3.8.7"
}

步骤stages

此处可以分步骤来进行操作,比如下属代码:

stages {stage('步骤一') {steps {操作1.1}}stage("步骤二"){steps {操作2.1}}
}

此处我们步骤一是拉取代码,步骤二是对服务器进行发版处理。

不要担心流水线语法自己不会,jenkins安心的给你准备了流水线语法生成器,如图:

在这里插入图片描述

步骤1:拉取代码+编译

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TZqL8bVy-1676189304717)(evernotecid://3560A1D2-2684-4104-9AF8-0F51B73094EC/appyinxiangcom/6351724/ENResource/p615)]

然后将这个数据填入到steps里面内容。例如:

stage('步骤一') {steps {git credentialsId: '056884ee-4185-44b9-ac82-833be2526ce5', url: 'http://x.x.x.x.x/a.git'}
}
步骤2:发送文件并启动

服务选择sshPublisher

在这里插入图片描述

对应参数如下

在这里插入图片描述

(1)Source files

你准备传递的文件地址,这里的地址指的是当前文件在工作工作空间的相对地址哈。你可以把发送文件的这一步的steps注释掉,先只进行编译,在工作空间查看位置。

在这里插入图片描述

此处最后就可以填写位置路径,比如:

yudao-server/target/yudao-server.jar

(2)Remove prefix

这个呢,是要删除的前缀,针对于上面来说,就是

yudao-server/target

(3)Remote directory

这个是待发版的目标地址,比如

/opt/yudao-server/api/temp

(4)Exec command

待执行的命令,根据自己需求来编写shell脚本。此处看需求,没什么好讲的。我把我的粘进来

# kill正在启动的服务。此处是根据后面的查询条件,来查询服务的进程号,从而杀掉。
kill -9 `ps -ef | grep 'yudao-server.jar'  | grep -v 'grep' | awk '{print $2}'`
# 打开文件夹
cd /opt/test/yudao-server-api
# 将之前的服务增加时间后缀做备份
mv yudao-server.jar  yudao-server.jar-$(date "+%Y%m%d%H%M%S")
# 把之前上传的服务从临时文件夹移到工作空间文件夹里面
mv ./temp/yudao-server.jar  ./
# 启动
nohup java -jar -Xms128m -Xmx128m /opt/test/yudao-server-api/yudao-server.jar --spring.profiles.active=prod >> /dev/null 2>&1 &

以上内容填写完后点击生成流水线,粘进steps中就行了。

相关文章:

Docker-安装Jenkins-使用jenkins发版Java项目

文章目录0.前言环境背景1.操作流程1.1前期准备工作1.1.1环境变量的配置1.2使用流水线的方式进行发版1.2.1新建流水线任务1.2.2流水线操作工具tools步骤stages步骤1:拉取代码编译步骤2:发送文件并启动0.前言 学海无涯,旅“途”漫漫,“途”中小记&#xff…...

spring 中的 Bean 是否线程安全

文章目录结论1、spring中的Bean从哪里来?2、spring中什么样的Bean存在线程安全问题?3、如何处理spring Bean的线程安全问题?结论 其实,Spring 中的 Bean 是否线程安全,其实跟 Spring 容器本身无关。Spring框架中没有提…...

微电网两阶段鲁棒优化经济调度方法[3]【升级优化版本】(Matlab代码实现)

💥💥💥💞💞💞欢迎来到本博客❤️❤️❤️💥💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑…...

C++入门教程||C++ 数据类型||C++ 变量类型

C 数据类型 使用编程语言进行编程时,需要用到各种变量来存储各种信息。变量保留的是它所存储的值的内存位置。这意味着,当您创建一个变量时,就会在内存中保留一些空间。 您可能需要存储各种数据类型(比如字符型、宽字符型、整型…...

【visio使用技巧】图片导出pdf时去掉多余空白

问题 在visio导出pdf格式的图片时,往往会存在多余的白边,如下图所示: 解决方法 依次点击:菜单栏→文件→选项→自定义功能区→勾选“开发工具”→确定。 依次点击菜单栏→开发工具→显示ShapeSheet→页→Print Properties→将…...

Rust语言之Option枚举类型

概述 Option是Rust语言设计中最重要的枚举类型之一,它编码了其它语言中空值与非空值的概念,差异在于,Rust不会允许你像其它语言一样以非空值的方式来使用一个空值,这避免了很多错误。Option在标准库中的定义如下: pu…...

基于TimeQuest时序优化原理和方法

💡 回顾基于RTL逻辑时序优化的基本思路,在关键路径中插入寄存器来优化时序 分析最坏路径 通过前面对TimeQuest软件的理解,基本上可以找到关键路径,此文章主要对关键路径时序进行优化,使设计达到时序要求,以…...

LeetCode第332场周赛

2023.2.12LeetCode第332场周赛 6354. 找出数组的串联值 思路 双指针模拟&#xff0c;两个指针相遇的时候要特判 算法 class Solution { public:long long findTheArrayConcVal(vector<int>& nums) {long long ans 0;int i 0, j nums.size() - 1;while (i <…...

2023-2-12刷题情况

字母板上的路径 题目描述 我们从一块字母板上的位置 (0, 0) 出发&#xff0c;该坐标对应的字符为 board[0][0]。 在本题里&#xff0c;字母板为board [“abcde”, “fghij”, “klmno”, “pqrst”, “uvwxy”, “z”]&#xff0c;如下所示。 我们可以按下面的指令规则行动…...

拉普拉斯矩阵

拉普拉斯算子 Δff(xi1,yj)f(xi−1,yj)f(xi,yj1)f(xi,yj−1)−4f(xi,yj)∑(k,l)∈N(i,j)(f(xk,yl)−f(xi,yj))\begin{aligned} \Delta f & f\left(x_{i1}, y_j\right) f\left(x_{i-1},y_j\right) f\left(x_i,y_{j1}\right)f\left(x_i,y_{j-1}\right) - 4f\left(x_i,y_j\r…...

Top-1错误率、Top-5错误率等常见的模型算法评估指标解析

Top-1 错误率&#xff1a;指预测输出的概率最高的类别与人工标注的类别相符的准确率&#xff0c;就是你预测的label取最后概率向量里面最大的那一个作为预测结果&#xff0c;如过你的预测结果中概率最大的那个分类正确&#xff0c;则预测正确&#xff0c;否则预测错误。比如预测…...

Urho3D 容器类型

Urho3D实现了自己的字符串类型和模板容器&#xff0c;而不是使用STL。其基本原理如下&#xff1a; 在某些情况下提高了性能&#xff0c;例如使用PODVector类时。保证字符串和容器的二进制大小&#xff0c;以允许例如嵌入Variant对象内。减少了编译时间。直接命名和实现&#x…...

C语言学习笔记(四): 循环结构程序设计

while语句 定义 While语句是C语言中的循环语句&#xff0c;它按条件循环执行语句&#xff0c;直到条件不满足为止 语法格式如下: while(condition) {//循环体内容; }使用实例 求123…100 include <stdio.h> int main(){int i 1, sum 0;while (i<100){sum i …...

02 OpenCV图像通道处理

1 通道提取与合并 在数字图像处理中&#xff0c;图像通道是指一个图像中的颜色信息被分离为不同的颜色分量。常见的图像通道包括RGB通道、灰度通道、HSV通道等。 RGB通道是指将图像分离为红色、绿色和蓝色三个颜色通道&#xff0c;每个通道表示相应颜色的亮度。这种方式是最常…...

微信小程序图书馆座位预约管理系统

开发工具&#xff1a;IDEA、微信小程序服务器&#xff1a;Tomcat9.0&#xff0c; jdk1.8项目构建&#xff1a;maven数据库&#xff1a;mysql5.7前端技术&#xff1a;vue、uniapp服务端技术&#xff1a;springbootmybatis本系统分微信小程序和管理后台两部分&#xff0c;项目采用…...

有限元分析学习一

系列文章目录 有限元分析学习一 提示&#xff1a;写完文章后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录系列文章目录前言一、有限元方法的简单介绍1.1 有限元的基础概念1.2 有限元软件发展历史1.3 有限元软件二、弹性力学的简单介绍2.1.…...

android avb2.0 总结

1、android vbmeta结构深入解析 2、android libavb深入解读 看完结构与代码,进一步了解了avb 比如vbmeta的结构、5种描述符、hash公钥签名存储位置 多层vbmeta结构、无vbmeta分区的验证逻辑、hash计算对比、公钥验证、签名验签、5种描述符体的处理 但是还有一些问题没有解决 如…...

聊天机器人-意图识别类,开源库推荐

随着人工智能和自然语言处理技术的不断发展&#xff0c;聊天机器人在商业、教育、医疗等领域的应用越来越广泛。因此&#xff0c;开源聊天机器人代码库也逐渐成为了热门话题。 开源聊天机器人代码库可以帮助开发者快速构建功能强大的聊天机器人&#xff0c;而不必从头开始编写…...

Java 标识符以及修饰符

Java 标识符Java 所有的组成部分都需要名字。类名、变量名以及方法名都被称为标识符。关于 Java 标识符&#xff0c;有以下几点需要注意&#xff1a;所有的标识符都应该以字母&#xff08;A-Z 或者 a-z&#xff09;,美元符&#xff08;$&#xff09;、或者下划线&#xff08;_&…...

封装、继承、Super、重写、多态instanceof类型转换的使用以及个人见解

这里写目录标题封装继承supersuper和this的区别重写多态instanceof类型转换封装 之前我们调用共有的属性&#xff0c;是直接可以调用的 但是属性私有后&#xff0c;无法在直接.调用 只能通过getset调用 继承 super 可以直接调用父类中属性和方法&#xff0c;私有的无法做 其…...

19c补丁后oracle属主变化,导致不能识别磁盘组

补丁后服务器重启&#xff0c;数据库再次无法启动 ORA01017: invalid username/password; logon denied Oracle 19c 在打上 19.23 或以上补丁版本后&#xff0c;存在与用户组权限相关的问题。具体表现为&#xff0c;Oracle 实例的运行用户&#xff08;oracle&#xff09;和集…...

深入剖析AI大模型:大模型时代的 Prompt 工程全解析

今天聊的内容&#xff0c;我认为是AI开发里面非常重要的内容。它在AI开发里无处不在&#xff0c;当你对 AI 助手说 "用李白的风格写一首关于人工智能的诗"&#xff0c;或者让翻译模型 "将这段合同翻译成商务日语" 时&#xff0c;输入的这句话就是 Prompt。…...

AI Agent与Agentic AI:原理、应用、挑战与未来展望

文章目录 一、引言二、AI Agent与Agentic AI的兴起2.1 技术契机与生态成熟2.2 Agent的定义与特征2.3 Agent的发展历程 三、AI Agent的核心技术栈解密3.1 感知模块代码示例&#xff1a;使用Python和OpenCV进行图像识别 3.2 认知与决策模块代码示例&#xff1a;使用OpenAI GPT-3进…...

STM32+rt-thread判断是否联网

一、根据NETDEV_FLAG_INTERNET_UP位判断 static bool is_conncected(void) {struct netdev *dev RT_NULL;dev netdev_get_first_by_flags(NETDEV_FLAG_INTERNET_UP);if (dev RT_NULL){printf("wait netdev internet up...");return false;}else{printf("loc…...

高频面试之3Zookeeper

高频面试之3Zookeeper 文章目录 高频面试之3Zookeeper3.1 常用命令3.2 选举机制3.3 Zookeeper符合法则中哪两个&#xff1f;3.4 Zookeeper脑裂3.5 Zookeeper用来干嘛了 3.1 常用命令 ls、get、create、delete、deleteall3.2 选举机制 半数机制&#xff08;过半机制&#xff0…...

汽车生产虚拟实训中的技能提升与生产优化​

在制造业蓬勃发展的大背景下&#xff0c;虚拟教学实训宛如一颗璀璨的新星&#xff0c;正发挥着不可或缺且日益凸显的关键作用&#xff0c;源源不断地为企业的稳健前行与创新发展注入磅礴强大的动力。就以汽车制造企业这一极具代表性的行业主体为例&#xff0c;汽车生产线上各类…...

视频字幕质量评估的大规模细粒度基准

大家读完觉得有帮助记得关注和点赞&#xff01;&#xff01;&#xff01; 摘要 视频字幕在文本到视频生成任务中起着至关重要的作用&#xff0c;因为它们的质量直接影响所生成视频的语义连贯性和视觉保真度。尽管大型视觉-语言模型&#xff08;VLMs&#xff09;在字幕生成方面…...

python如何将word的doc另存为docx

将 DOCX 文件另存为 DOCX 格式&#xff08;Python 实现&#xff09; 在 Python 中&#xff0c;你可以使用 python-docx 库来操作 Word 文档。不过需要注意的是&#xff0c;.doc 是旧的 Word 格式&#xff0c;而 .docx 是新的基于 XML 的格式。python-docx 只能处理 .docx 格式…...

2025盘古石杯决赛【手机取证】

前言 第三届盘古石杯国际电子数据取证大赛决赛 最后一题没有解出来&#xff0c;实在找不到&#xff0c;希望有大佬教一下我。 还有就会议时间&#xff0c;我感觉不是图片时间&#xff0c;因为在电脑看到是其他时间用老会议系统开的会。 手机取证 1、分析鸿蒙手机检材&#x…...

零基础在实践中学习网络安全-皮卡丘靶场(第九期-Unsafe Fileupload模块)(yakit方式)

本期内容并不是很难&#xff0c;相信大家会学的很愉快&#xff0c;当然对于有后端基础的朋友来说&#xff0c;本期内容更加容易了解&#xff0c;当然没有基础的也别担心&#xff0c;本期内容会详细解释有关内容 本期用到的软件&#xff1a;yakit&#xff08;因为经过之前好多期…...