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 |
docker | Docker 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.前言 学海无涯,旅“途”漫漫,“途”中小记ÿ…...
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. 找出数组的串联值 思路 双指针模拟,两个指针相遇的时候要特判 算法 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) 出发,该坐标对应的字符为 board[0][0]。 在本题里,字母板为board [“abcde”, “fghij”, “klmno”, “pqrst”, “uvwxy”, “z”],如下所示。 我们可以按下面的指令规则行动…...
拉普拉斯矩阵
拉普拉斯算子 Δ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 错误率:指预测输出的概率最高的类别与人工标注的类别相符的准确率,就是你预测的label取最后概率向量里面最大的那一个作为预测结果,如过你的预测结果中概率最大的那个分类正确,则预测正确,否则预测错误。比如预测…...
Urho3D 容器类型
Urho3D实现了自己的字符串类型和模板容器,而不是使用STL。其基本原理如下: 在某些情况下提高了性能,例如使用PODVector类时。保证字符串和容器的二进制大小,以允许例如嵌入Variant对象内。减少了编译时间。直接命名和实现&#x…...
C语言学习笔记(四): 循环结构程序设计
while语句 定义 While语句是C语言中的循环语句,它按条件循环执行语句,直到条件不满足为止 语法格式如下: while(condition) {//循环体内容; }使用实例 求123…100 include <stdio.h> int main(){int i 1, sum 0;while (i<100){sum i …...

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

微信小程序图书馆座位预约管理系统
开发工具:IDEA、微信小程序服务器:Tomcat9.0, jdk1.8项目构建:maven数据库:mysql5.7前端技术:vue、uniapp服务端技术:springbootmybatis本系统分微信小程序和管理后台两部分,项目采用…...

有限元分析学习一
系列文章目录 有限元分析学习一 提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录系列文章目录前言一、有限元方法的简单介绍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种描述符体的处理 但是还有一些问题没有解决 如…...
聊天机器人-意图识别类,开源库推荐
随着人工智能和自然语言处理技术的不断发展,聊天机器人在商业、教育、医疗等领域的应用越来越广泛。因此,开源聊天机器人代码库也逐渐成为了热门话题。 开源聊天机器人代码库可以帮助开发者快速构建功能强大的聊天机器人,而不必从头开始编写…...
Java 标识符以及修饰符
Java 标识符Java 所有的组成部分都需要名字。类名、变量名以及方法名都被称为标识符。关于 Java 标识符,有以下几点需要注意:所有的标识符都应该以字母(A-Z 或者 a-z),美元符($)、或者下划线(_&…...

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

基于FPGA的PID算法学习———实现PID比例控制算法
基于FPGA的PID算法学习 前言一、PID算法分析二、PID仿真分析1. PID代码2.PI代码3.P代码4.顶层5.测试文件6.仿真波形 总结 前言 学习内容:参考网站: PID算法控制 PID即:Proportional(比例)、Integral(积分&…...

51c自动驾驶~合集58
我自己的原文哦~ https://blog.51cto.com/whaosoft/13967107 #CCA-Attention 全局池化局部保留,CCA-Attention为LLM长文本建模带来突破性进展 琶洲实验室、华南理工大学联合推出关键上下文感知注意力机制(CCA-Attention),…...

HTML 列表、表格、表单
1 列表标签 作用:布局内容排列整齐的区域 列表分类:无序列表、有序列表、定义列表。 例如: 1.1 无序列表 标签:ul 嵌套 li,ul是无序列表,li是列表条目。 注意事项: ul 标签里面只能包裹 li…...
电脑插入多块移动硬盘后经常出现卡顿和蓝屏
当电脑在插入多块移动硬盘后频繁出现卡顿和蓝屏问题时,可能涉及硬件资源冲突、驱动兼容性、供电不足或系统设置等多方面原因。以下是逐步排查和解决方案: 1. 检查电源供电问题 问题原因:多块移动硬盘同时运行可能导致USB接口供电不足&#x…...
工业自动化时代的精准装配革新:迁移科技3D视觉系统如何重塑机器人定位装配
AI3D视觉的工业赋能者 迁移科技成立于2017年,作为行业领先的3D工业相机及视觉系统供应商,累计完成数亿元融资。其核心技术覆盖硬件设计、算法优化及软件集成,通过稳定、易用、高回报的AI3D视觉系统,为汽车、新能源、金属制造等行…...

自然语言处理——Transformer
自然语言处理——Transformer 自注意力机制多头注意力机制Transformer 虽然循环神经网络可以对具有序列特性的数据非常有效,它能挖掘数据中的时序信息以及语义信息,但是它有一个很大的缺陷——很难并行化。 我们可以考虑用CNN来替代RNN,但是…...

C++ Visual Studio 2017厂商给的源码没有.sln文件 易兆微芯片下载工具加开机动画下载。
1.先用Visual Studio 2017打开Yichip YC31xx loader.vcxproj,再用Visual Studio 2022打开。再保侟就有.sln文件了。 易兆微芯片下载工具加开机动画下载 ExtraDownloadFile1Info.\logo.bin|0|0|10D2000|0 MFC应用兼容CMD 在BOOL CYichipYC31xxloaderDlg::OnIni…...

GC1808高性能24位立体声音频ADC芯片解析
1. 芯片概述 GC1808是一款24位立体声音频模数转换器(ADC),支持8kHz~96kHz采样率,集成Δ-Σ调制器、数字抗混叠滤波器和高通滤波器,适用于高保真音频采集场景。 2. 核心特性 高精度:24位分辨率,…...

Yolov8 目标检测蒸馏学习记录
yolov8系列模型蒸馏基本流程,代码下载:这里本人提交了一个demo:djdll/Yolov8_Distillation: Yolov8轻量化_蒸馏代码实现 在轻量化模型设计中,**知识蒸馏(Knowledge Distillation)**被广泛应用,作为提升模型…...
探索Selenium:自动化测试的神奇钥匙
目录 一、Selenium 是什么1.1 定义与概念1.2 发展历程1.3 功能概述 二、Selenium 工作原理剖析2.1 架构组成2.2 工作流程2.3 通信机制 三、Selenium 的优势3.1 跨浏览器与平台支持3.2 丰富的语言支持3.3 强大的社区支持 四、Selenium 的应用场景4.1 Web 应用自动化测试4.2 数据…...