jenkins使用

安装插件 maven publish over ssh

publish over ssh 会将打包后的jar包,通过ssh推送到指定的服务器上,,在jenkins中设置,推送后脚本,实现自动部署jar包,,
装了这个插件之后,可以在项目中的 post steps,使用send files or execute commands over SSH
在这里插入图片描述
点击后会让你选择推送到哪个服务器:
需要在全局配置中先配置服务器:
在这里插入图片描述
找到 publish over ssh 配置:
在这里插入图片描述
添加一个ssh server 并设置用户名密码,,右下角可以测试连接是否成功


在项目中设置推送的服务器:
在这里插入图片描述

遇到的问题:

  • 构建成功之后 exec command 不执行:
    原因:Jenkins执行shell是Jenkins来将你填写的shell脚本语句在部署的机器上执行,实际上就是jenkins启动子进程到部署的机器上执行命令行,所以当最后一行命令执行结束后,jenkins会杀掉所有在此过程中创建的子进程,如果这里有需要后台运行的,或者挂起的任务时,在jenkins执行结束后,这些挂起的或后台的任务都会被杀掉
    解决:
# 在命令前添加  这两行
source /etc/profile
BUILD_ID=dontKillMe
nohup java -jar /root/jenkins/test*.jar >/root/jenkins/mylog.log 2>&1  &

引用:
https://blog.csdn.net/qq_35738369/article/details/116154228
https://www.ngui.cc/el/2438837.html?action=onClick
https://www.jianshu.com/p/c06007175402


每次构建都会去执行构建后脚本,,也就是去启动这个jar包,,如果一直启动jar包,会出现占用的问题,,就需要在jenkins将文件传过去之前,,将这个占用端口的进程停掉,,就需要在jenkins中添加 pre steps
在这里插入图片描述

# 删除历史数据
#rm -rf jenkins


# 获取传入的参数   $1 表示第一个参数    $2表示第二个参数
echo "arg:$1"
appname=$1


# 查找jar包的pid
pid=`ps -ef | grep $1 | grep -v grep | awk '{print $2}'`
echo $pid

# 判断pid是否存在,存在才去kill
# 使用 -z 做空值判断  zero
if [ -z $pid ];
        then
                echo "$appname not started"
        else
                kill -9 $pid
                echo "$appname stoping..."
fi


# 检查这个pid 有没有被杀掉  -w   匹配整个word   过滤掉僵尸进程:已经执行完了,但是父进程尚未从操作系统的进程表中删除的进程
check=`ps -ef | grep -w $pid | grep java | grep -v "<defunct>"`

echo "check value: $check"
if [ -z $check ];
then
echo "$appname  pid:$pid is stop"
else
echo "$appname stop fail"
fi

遇到的问题:

  • shell脚本 = 赋值两边不能有空格
  • if [ -z $pid ];[ 括号前后要跟空格
  • ps -ef | grep -w : 全词匹配,word
  • ps -ef | grep -v 过滤掉
  • awk 处理字符串,提取文本内容
  • echo 后面要跟空格
  • 僵尸进程: 已经执行完了,但是父进程尚未从操作系统的进程表中删除的进程,zombie process ,状态显示为<defunct> ,僵尸进程通常是由于父进程执行完了,没有等待子进程,,就是在子进程退出后,没有正确处理子进程的终止状态而产生的,,父进程负责调用系统以获取子进程的终止状态,然后释放掉子进程所占用的资源
  • if 后面要跟 fi
other

nohup : no hang up :不会挂断,避免因终端会话的断开而导致命令终止
在这里插入图片描述

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

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

相关文章

adb对安卓app进行抓包(ip连接设备)

adb对安卓app进行抓包&#xff08;ip连接设备&#xff09; 一&#xff0c;首先将安卓设备的开发者模式打开&#xff0c;提示允许adb调试 二&#xff0c;自己的笔记本要和安卓设备在同一个网段下&#xff08;同连一个WiFi就可以了&#xff09; 三&#xff0c;在笔记本上根据i…

【MT32F006】MT32F006之定时器延时

本文最后修改时间&#xff1a;2023年03月30日 一、本节简介 本文介绍如何使用MT32F006的定时器做us、ms级的延时。 二、实验平台 库版本&#xff1a;V1.0.0 编译软件&#xff1a;MDK5.37 硬件平台&#xff1a;MT32F006开发板&#xff08;主芯片MT32F006&#xff09; 仿真器…

Docker+Jmeter+InfluxDB+Grafana 搭建性能监控平台

当今互联网发展迅速&#xff0c;应用程序的性能监控显得越来越重要。 DockerJmeterInfluxDBGrafana 是一种常用的性能监控平台&#xff0c;可以帮助开发者快速搭建一套可靠的监控体系。在本文中&#xff0c;我们将介绍如何使用这些工具搭建性能监控平台&#xff0c;以便开发人…

初试rabbitmq

rabbitmq的七种模式 Hello word 客户端引入依赖 <!--rabbitmq 依赖客户端--><dependency><groupId>com.rabbitmq</groupId><artifactId>amqp-client</artifactId><version>5.8.0</version></dependency> 生产者 imp…

DyLoRA:使用动态无搜索低秩适应的预训练模型的参数有效微调

又一个针对LoRA的改进方法&#xff1a; DyLoRA: Parameter-Efficient Tuning of Pretrained Models using Dynamic Search-Free Low Rank Adaptation https://arxiv.org/pdf/2210.07558v2.pdf https://github.com/huawei-noah/KD-NLP/tree/main/DyLoRA Part1前言 LoRA存在…

[oneAPI] 使用序列到序列网络和注意力进行翻译

[oneAPI] 使用序列到序列网络和注意力进行翻译 oneAPI特殊写法使用序列到序列网络和注意力进行翻译Intel Optimization for PyTorch导入包加载数据并对数据进行处理序列到序列网络和注意力模型与介绍编码器解码器简单解码器注意力解码器 训练过程准备训练数据训练模型可视化注意…

隧道广播平面波扬声器的应用

隧道广播平面波扬声器是一款高清晰定向扬声器&#xff0c;采用稀土永磁磁性材料与声波相控阵技术&#xff0c;有效的解决了声音定向问题。是远距离定向声波发射装置是一种革命性的技术&#xff0c;它具有大功、率高清晰、远距离传声特点&#xff0c;可以将声音信息清晰地传输到…

(搜索) 剑指 Offer 12. 矩阵中的路径 ——【Leetcode每日一题】

❓剑指 Offer 12. 矩阵中的路径 难度&#xff1a;中等 给定一个 m * n 二维字符网格 board 和一个字符串单词 word 。如果 word 存在于网格中&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 单词必须按照字母顺序&#xff0c;通过相邻的单元格内的字母构…

代码随想录算法训练营第三十七天 | 738.单调递增的数字,968.监控二叉树

代码随想录算法训练营第三十七天 | 738.单调递增的数字&#xff0c;968.监控二叉树 738.单调递增的数字暴力解法贪心算法:eyes:题目总结:eyes: 968.监控二叉树:eyes:题目总结:eyes: 738.单调递增的数字 题目链接 视频讲解 当且仅当每个相邻位数上的数字 x 和 y 满足 x < y …

微信小程序(原生)搜索功能实现

一、效果图 二、代码 wxml <van-searchvalue"{{ keyword }}"shape"round"background"#000"placeholder"请输入关键词"use-action-slotbind:change"onChange"bind:search"onSearch"bind:clear"onClear&q…

【Linux操作系统】深入探索Linux进程:创建、共享与管理

进程的创建是Linux系统编程中的重要概念之一。在本节中&#xff0c;我们将介绍进程的创建、获取进程ID和父进程ID、进程共享、exec函数族、wait和waitpid等相关内容。 文章目录 1. 进程的创建1.1 函数原型和返回值1.2 函数示例 2. 获取进程ID和父进程ID2.1 函数原型和返回值2.…

java面试基础 -- 普通类 抽象类 接口

目录 抽象类语法 抽象类特性 普通类 & 抽象类 抽象类 & 接口 什么是接口 语法 接口方法 变量 接口特性 抽象类&接口的区别 抽象类语法 在Java中&#xff0c;一个类如果被 abstract 修饰称为抽象类&#xff0c;抽象类中被 abstract 修饰的方法称为抽象…

ZooKeeper的应用场景(分布式锁、分布式队列)

7 分布式锁 分布式锁是控制分布式系统之间同步访问共享资源的一种方式。如果不同的系统或是同一个系统的不同主机之间共享了一个或一组资源&#xff0c;那么访问这些资源的时候&#xff0c;往往需要通过一些互斥手段来防止彼此之间的干扰&#xff0c;以保证一致性&#xff0c;…

【Unity每日一记】计时器——各种方法的实现

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;元宇宙-秩沅 &#x1f468;‍&#x1f4bb; hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 秩沅 原创 &#x1f468;‍&#x1f4bb; 收录于专栏&#xff1a;uni…

(7)(7.3) 自动任务中的相机控制

文章目录 前言 7.3.1 概述 7.3.2 自动任务类型 7.3.3 创建合成图像 前言 本文介绍 ArduPilot 的相机和云台命令&#xff0c;并说明如何在 Mission Planner 中使用这些命令来定义相机勘测任务。这些说明假定已经连接并配置了相机触发器和云台(camera trigger and gimbal hav…

7.原 型

7.1原型 【例如】 另外- this指向&#xff1a; 构造函数和原型对象中的this都指向实例化的对象 7.2 constructor属性 每个原型对象里面都有个constructor属性( constructor构造函数) 作用&#xff1a;该属性指向该原型对象的构造函数 使用场景: 如果有多个对象的方法&#…

侯捷 八部曲 C++面向对象高级开发(上)+(下)【C++学习笔记】 超详细 万字笔记总结 笔记合集

文章目录 Ⅰ C part1 面向对象编程1 头文件与类的声明1.1 c vs cpp关于数据和函数1.2 头文件与类1.2.1 头文件1.2.2 class的声明1.2.3 模板初识 2 构造函数2.1 inline 函数2.2 访问级别2.3 ctor 构造函数2.3.1 ctor 的写法2.3.2 ctor/函数 重载2.3.3 ctor 放在 private 区 2.4 …

Vue3 —— watchEffect 高级侦听器

该文章是在学习 小满vue3 课程的随堂记录示例均采用 <script setup>&#xff0c;且包含 typescript 的基础用法 前言 Vue3 中新增了一种特殊的监听器 watchEffect&#xff0c;它的类型是&#xff1a; function watchEffect(effect: (onCleanup: OnCleanup) > void,o…

SpringBoot常用注解 - @Controller

Controller : Controller是加在类上面的注解&#xff0c;使得类里面的每个方法都返回一个视图页面 实际开发中&#xff0c;有时候只是让后端的结果返回到前端&#xff0c;而不作为新的视图页面&#xff0c;此时需要结合 ResponseBody&#xff0c;让这个方法返回给前端的不是一个…

搭建 Python 环境 | Python、PyCharm

计算机 计算机能完成的工作&#xff1a; 算术运算逻辑判断数据存储网络通信…更多的更复杂的任务 以下这些都可以称为 “计算机”&#xff1a; 一台计算机主要由以下这几个重要的组件构成 CPU 中央处理器&#xff1a;大脑&#xff0c;算术运算&#xff0c;逻辑判断 存储器&…