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执行结束后,这些挂起的或后台的任务都会被杀掉
    解决:
shell 复制代码
# 在命令前添加  这两行
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

shell 复制代码
# 删除历史数据
#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 :不会挂断,避免因终端会话的断开而导致命令终止

相关推荐
CoderYanger几秒前
C.滑动窗口-越短越合法/求最长/最大——2958. 最多 K 个重复元素的最长子数组
java·数据结构·算法·leetcode·哈希算法·1024程序员节
洞窝技术9 分钟前
Redis 4.0 升级至 5.0 实施手册
java·redis
无代码专家20 分钟前
设备巡检数字化解决方案:构建高效闭环管理体系
java·大数据·人工智能
tanxiaomi36 分钟前
Redisson分布式锁 和 乐观锁的使用场景
java·分布式·mysql·面试
零匠学堂202537 分钟前
移动学习系统,如何提升企业培训效果?
java·开发语言·spring boot·学习·音视频
小杨快跑~44 分钟前
从装饰者到桥接再到工厂:模式组合的艺术
java·开发语言·设计模式
饕餮争锋1 小时前
Spring内置的Bean作用域介绍
java·后端·spring
却话巴山夜雨时i1 小时前
394. 字符串解码【中等】
java·数据结构·算法·leetcode
张人大 Renda Zhang1 小时前
Java 虚拟线程 Virtual Thread:让“每请求一线程”在高并发时代复活
java·jvm·后端·spring·架构·web·虚拟线程
一勺菠萝丶1 小时前
解决 SLF4J 警告问题 - 完整指南
java·spring boot·后端