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 :不会挂断,避免因终端会话的断开而导致命令终止

相关推荐
YMWM_10 分钟前
python3中的装饰器介绍及其应用场景
java·后端·spring
sheji341611 分钟前
【开题答辩全过程】以 基于Java的饮品店管理系统的实现为例,包含答辩的问题和答案
java·开发语言
大阿明13 分钟前
Spring.factories
java·数据库·spring
菜鸟程序员专写BUG15 分钟前
SpringBoot 事务失效报错全集|rollback不生效/事务不回滚/传播机制踩坑全解决
java·spring boot·spring
向上_5035829122 分钟前
配置Protobuf输出Java文件或kotlin文件
android·java·开发语言·kotlin
IAUTOMOBILE25 分钟前
C++ 入门基础:开启编程新世界的大门
java·jvm·c++
秋野酱29 分钟前
基于springboot的母婴商城系统设计与实现(源码+文档+部署讲解)
java·spring boot·后端
无籽西瓜a40 分钟前
【西瓜带你学设计模式 | 第二期-观察者模式】观察者模式——推模型与拉模型实现、优缺点与适用场景
java·后端·观察者模式·设计模式
zihao_tom1 小时前
Springboot-配置文件中敏感信息的加密:三种加密保护方法比较
java·spring boot·后端
程序员buddha1 小时前
Java面试八股文框架篇
java·开发语言·面试