jenkins执行脚本不退出

ERROR: Exception when publishing, exception message [Exec timed out or was interrupted after XXX ms
错误信息:

Waiting for Jenkins to finish collecting data
[JENKINS] Archiving /shfb_30/.jenkins/workspace/apollo_test/pom.xml to com.shfb.mobile/mobile/1.0-SNAPSHOT/mobile-1.0-SNAPSHOT.pom
[JENKINS] Archiving /shfb_30/.jenkins/workspace/apollo_test/target/mobile-1.0-SNAPSHOT.jar to com.shfb.mobile/mobile/1.0-SNAPSHOT/mobile-1.0-SNAPSHOT.jar
channel stopped
SSH: Connecting from host [iZ25txgf5wsZ]
SSH: Connecting with configuration [45.26_jenkins_docker] ...
SSH: EXEC: STDOUT/STDERR from command [/shfb_50G/apollo/apollo.sh] ...
开始运运行脚本
SSH: Disconnecting configuration [45.26_jenkins_docker] ...
ERROR: Exception when publishing, exception message [Exec timed out or was interrupted after 68,342 ms]
Build step ‘Send build artifacts over SSH‘ changed build result to UNSTABLE
Finished: UNSTABLE

我在使用Jenkins进行远程部署时,构建后执行的脚本没有正常退出导致。
我的脚本没有写错,干的事情就是启动项目。
而导致它没有正常退出的原因是:
Since you are executing a script from a non-TTY environment; The Jenkins is not able to get the exit properly, out of your script.
意思是:因为你是从一个非tty环境执行脚本;Jenkins不能正常从你的脚本中退出。
解决办法:

外国网友解释:
Since you are executing a script from a non-TTY environment; The Jenkins is not able to get the exit properly, out of your script.
因为您正在执行一个非tty环境的脚本;jenkins不能正确地离开你的脚本。
What you want is to exit immediately, after script execution! Don‘t want to wait for the entire timeout to happen and then disconnect improperly!
您想要的是在脚本执行后立即退出!不要等待整个超时发生,然后错误地断开连接!
Solution: Make it Exec in PTY. (Please tick the check-box as shown in attached screenshot)
解决方案:在PTY中使用Exec

参考地址:http://stackoverflow.com/questions/11290540/jenkins-text-finder-unable-to-success-my-build/22011893#22011893
我最近(2016-10-25)在配置新项目时,发现,即使是勾选了Exec in pty,出现了项目不能启动的问题。
?1
?2
?

执行的结果是项目没有启动:

之后我又去查资料,依然是在那个外国网站的下面一个人回答中,找到了解决的方法!
可能的原因是因为,在执行openapi start 命令时,刚启动,pty(伪终端)就断开连接,
解决的办法就是,让脚步在后台运行,也就即使伪终端断开了,项目依然可以启动完成。
之后我执行的脚本改为
nohup sh ggf10service.sh
?1
其实就是在前面加上nohup;
外国网友后面还加了sleep 1:nohup sh ggf10service.sh & sleep 1
我没有加也可以!
这里还需要注意的地方是,启动成功后,Jenkins控制台会打印这么一句话
nohup: ignoring input and appending output to `nohup.out‘
?1
也就是说,当我们使用nohup命令的的时候,日志会被打印到nohup.out文件中去。
如果我们不做任何处理,会随着每次的重新启动,nohup.out会越来越大。
所以我在我执行的脚本中添加了
Cat /dev/null > nohup.out
这样每次启动时,都会先清空掉这个文件。
公网构建mobile 和uservice 说明:
地址:101.201.31.68/jenkins
Mobile 项目名称:mobile-api
Uservice 项目名称:uservice
提交代码后,无需调整其他参数,直接构建即可。

原文地址:http://blog.51cto.com/11520242/2170632

时间: 2024-08-29 06:34:41

jenkins执行脚本不退出的相关文章

jenkins执行脚本npm: command not found解决

1.查看系统环境变量 echo $PATH /usr/local/node/bin:/usr/lib64/qt-3.3/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/www_app/.local/bin:/home/www_app/bin 2.把服务器的环境变量添加到jenkins Node Properties > Environment variables > 键值对列表 原文地址:https://www.cnblo

持续集成学习9 jenkins执行脚本

一.配置 1.首先在slave节点上写一脚本 [[email protected] script]# cat /application/script/test.sh #!/bin/bash echo "hehe" echo "$1" 原文地址:https://www.cnblogs.com/Presley-lpc/p/11806885.html

SSH远程执行脚本tomcat未启动

背景: 在本地写好重启tomcat的脚本后,本地执行脚本没有问题,但在远程服务器上SSH免密登录执行后. 发现可以把TOMCAT杀死,但tomcat却起不来.这个问题困扰了我一天.终于解决了,决定写篇博文 与大家分享. 把我遇到的怪异现象分享给大家: 1 脚本执行了吗?sh -x 查看脚本执行过程,确实执行了啊,也没有报错.但到目标服务器去看没有java 进程也没有相应的端口.邪门了,到底是什么原因呢? 2 看日志.在远程执行脚本的时候就把日志打开了,tail -f 发现没有一丁点的日志输出.

jmeter命令行执行脚本

为什么要命令行执行脚本: 1.图形化界面消耗更多资源,CPU和内存 2.图形化界面不支持大型的负载测试和性能测试 3.命令行测试支持持续集成,例如放到Jenkins这样的CI工具上 nohup:让程序在后台运行 -h:帮助,打印出有用的信息并退出 -n:以非GUI形式运行Jmeter -t:Jmeter脚本路径 -l:输出结果路径,如果没有该文件就自动创建,可以生成csv或者jtl文件 -r:远程执行,启动远程服务 -H:代理主机,设置Jmeter使用的代理主机 -P:代理端口,设置Jmeter

linux:执行脚本出现/bin/sh^M: bad interpreter: No such file or directory

问题出在^M,原因是脚本文件的编码格式是dos,有可能是我在window下编辑完了直接传到linux的结果,可以在vim中输入以下命令确认编码格式 :set ff //可以看到dos或unix的字样. 如果的确是dos格式的, 那么你可以用set ff=unix把它强制为unix格式的, 然后存盘退出. 再运行一遍看. 也可以在命令行中用dos2unix指令转换编码 #dos2unix filename linux:执行脚本出现/bin/sh^M: bad interpreter: No suc

ssh连接远程主机执行脚本的环境变量问题

用ssh命令ssh [email protected] "/web/tomcat-7000/bin/startup.sh" 登陆到远程机器remote上执行脚本时,遇到一个奇怪的问题:tomcat服务不能启动 Neither the JAVA_HOME nor the JRE_HOME environment variable is definedAt least one of these environment variable is needed to run this progr

jenkins下脚本权限问题

在jenkins环境下,执行需要root权限的脚本,报错. 修改方法: 1. centos环境下,在/etc/sudoers.d/ 目录下,增加一个 jenkins文件,内容如下: Defaults:jenkins !requiretty jenkins ALL=(ALL) NOPASSWD: ALL 2. 在脚本中命令前,增加sudo命令即可,或sudo 执行脚本 sudo /opt/webmaster/sitedeploy.sh --source $BUILD_DIR --site xxx.

linux-ssh远程后台执行脚本-放置后台执行问题(转)

写了一个监控负载的小脚本(死循环,测试结束后再kill对应进程),因需要监控多台服务器,所以在一台服务器上使用ssh统一执行脚本 遇到问题:使用ssh [email protected] '/usr/local/luly/loadavg.sh 2 2 &'执行本机没有即时退出,占用ssh连接本意是发送命令到远程机执行,本机发送后直接退出 尝试:1.增加nohup,效果相同:ssh [email protected] 'nohup /usr/local/luly/loadavg.sh 2 2 &am

jenkins 执行可执行jar包测试中,请求乱码解决办法

自动化脚本在eclipse中执行,没有问题.jenkins构建打包自动化脚本,在执行脚本时,遇到了脚本中发送的请求的参数为乱码,实现了如下一些解决办法: 1.设置操作系统环境JAVA_TOOL_OPTIONS   = -Dfile.encoding=UTF-8 2.jenkins 系统管理> 系统设置 设置全局变量 3.修改代码,代码中把请求参数在使用前变成uft8 格式.响应输出流也专换成utf-8 para = new String(para.toString().getBytes(), &qu