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

相关推荐
float_六七4 小时前
IntelliJ IDEA双击Ctrl的妙用
java·ide·intellij-idea
能摆一天是一天5 小时前
JAVA stream().flatMap()
java·windows
颜如玉6 小时前
🤲🏻🤲🏻🤲🏻临时重定向一定要能重定向🤲🏻🤲🏻🤲🏻
java·http·源码
程序员的世界你不懂7 小时前
【Flask】测试平台开发,新增说明书编写和展示功能 第二十三篇
java·前端·数据库
星空寻流年7 小时前
设计模式第一章(建造者模式)
java·设计模式·建造者模式
gb42152878 小时前
java中将租户ID包装为JSQLParser的StringValue表达式对象,JSQLParser指的是?
java·开发语言·python
曾经的三心草8 小时前
Python2-工具安装使用-anaconda-jupyter-PyCharm-Matplotlib
android·java·服务器
Metaphor6928 小时前
Java 高效处理 Word 文档:查找并替换文本的全面指南
java·经验分享·word
ChinaRainbowSea8 小时前
7. LangChain4j + 记忆缓存详细说明
java·数据库·redis·后端·缓存·langchain·ai编程
stormsha8 小时前
飞算JavaAI炫技赛电商系统商品管理模块的架构设计与实现
java·架构·鸿蒙系统