文档章节

jenkins 部署 swoole 项目

dubox
 dubox
发布于 2018/05/30 20:30
字数 784
阅读 415
收藏 0

原标题:ERROR: Exception when publishing, exception message [Exec timed out or was interrupted after 120,000

————————————————————————————————————————————

最近 ,用 swoole 搞了个服务端项目,以前都是 php-fpm 项目,

这次不同的是要有自己的启动脚本了。。。

 

然后也想用 jenkins 实现自动部署,于是问题来了,当 jenkins 执行完所有命令后并没有终止,而是:

 一直转圈  其实已经执行完了。

 

出现这种情况应该是 jenkins 无法判断命令是否执行完成,于是各方搜索,有说是命令最后要通过 

exit 0 表示成功,exit 1 表示失败

经测试 无效。。。

 

后来找到了这个解释:

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.(https://stackoverflow.com/questions/11290540/jenkins-text-finder-unable-to-success-my-build/22011893#22011893

大概是:你在一个non-TTY环境执行脚本,导致 jenkins 不能正确的得到你的脚本的 exit 从而退出脚本

解决办法是 :

点击高级选项

给 pty 打上勾;

果然问题解决。。。

 

但是,为什么会出现这个问题还没搞清楚,因为之前的 php-fpm 项目都不需要勾这个,两者之间的主要区别就是:

之前是:service php-fpm restart

我的是:sh start.sh ;  sh stop.sh

难道是系统 service 有什么不同?

 

-----------------------第二天更新------------------------

使用了 pty 又有一个新问题,我的主进程使用swoole_process::daemon 实现了守护进程,当 jenkins 的 pty 退出后 依然在运行,可是主进程启动的两个子进程死掉了。。。

后来把子进程也做成守护进程 还是不行,

后来发现swoole 的daemon 会重新 fork当前进程,网上有说重新 fork 就和当前会话脱离关系了,会话结束时就不会结束进程(但是守护进程本来不就是干这个事儿的么 ?),

于是我猜测问题可能在于 我的swoole_process::daemon调用在主进程的最后 即启动子进程之后,这样子进程就是 fork 之前的主进程启动的和会话没有脱离关系(但是网上有这样的说法:“因为shell只认识它自己fork出来的子进程,并不知道"子又生孙"的事情,也就不会给孙子进程发送SIGHUP信号了;” )?

又于是 我把swoole_process::daemon放到了最开始 果然问题解决!!

后面还有个小问题 :有一定概率服务起不起来,应该是主进程 fork 之后,pty 没有等到它执行完成?于是在最后加 sleep 1 问题解决了。。。

 

现在问题是解决了,但是里面的原理比没有十分清楚,

父进程、子进程、tty、pty、守护进程 它们之间的关系或协作关系还有待进一步研究,

按网上的说法  ssh 登录服务器应该也属于 pty ,但是我 ssh 等服务器启动我的服务 再退出也是没有问题的,不知道 jenkins 的 pty 有什么不同? 或者 jenkins 勾选和不勾选 pty 有什么不同?

© 著作权归作者所有

共有 人打赏支持
dubox
粉丝 3
博文 98
码字总数 28307
作品 0
西安
程序员
私信 提问
RapPHP 正式发布,支持 Swoole 的全 Web 开发框架

RapPHP 开发框架现在正式向全网进行开源,经过我们内部一定时间的开发升级,当前版本已迭代到 v2.0.6,当前框架包含完整的开发 php 项目需要的各个组件和特性,并已经过多个项目的验证。 Ra...

景颢
2018/09/07
1K
22
RapPHP 支持 Swoole 的全 Web 开发框架

RapPHP 开发框架现在正式向全网进行开源,经过我们内部一定时间的开发升级,当前版本已迭代到 v2.0.6,当前框架包含完整的开发 php 项目需要的各个组件和特性,并已经过多个项目的验证。 Ra...

景颢
2018/09/07
0
0
openshift/origin学习记录(7)——集成Jenkins服务

学习资料来源于官方英文文档与《开源容器云OpenShift》一书,因为刚开始学习,不确定博客的正确性,以下内容仅供参考。 Openshift项目提供了集成Openshift插件的Jenkins容器镜像和部署模板。...

huqigang
2017/09/12
0
0
千寻/swooleWechat

swooleWechat 本项目使用swoole framework官方框架开发,在不改动原框架基础上进行优化,目前的优化主要是控制器模块支持、配置文件按环境不同划分. 本项目主要为了节省微信服务号的开发成本...

千寻
2017/05/15
0
0
RapPhp 2.0.8 发布:支持 Swoole 的全 Web 开发框架

RapPHP 开发框架现在正式向全网进行开源,经过我们内部一定时间的开发升级,当前版本已迭代到 v2.0.8,当前框架包含完整的开发 php 项目需要的各个组件和特性,并已经过多个项目的验证。 Ra...

景颢
2018/09/11
878
4

没有更多内容

加载失败,请刷新页面

加载更多

MySQL查询执行

当我们希望MySQL能够以更高的性能运行查询时,最好的办法就是弄清楚MySQL是如何优化和执行查询的。一旦理解了这一点,很多查询优化工作实际上就是遵循一些原则让优化器能够按照预想的合理方式...

问题终结者
47分钟前
0
0
CDH5动静态资源池配置与回滚

关于动态 静态资源池的配置以前都有提过,可以从以下几篇了解: YARN动态资源池配置案例 https://yq.aliyun.com/ziliao/346856# Hadoop YARN配置参数剖析(4)—Fair Scheduler相关参数 Hadoop...

hblt-j
52分钟前
3
0
WordPress仿站实战教程

有一个月没有写blog了,一直在学习wordpress的知识,现在能够进行简单的政府企业门户网站的仿制,wordpress的主题订制,一般是对前端要求比较高,wordpress学会了,建站还是非常的快的。下面...

临江仙卜算子
54分钟前
3
0
图像库stb_image

https://github.com/nothings/stb 目前一般主流的图像格式也就是bmp,jpg,png,tga,dds,除了DDS一般是给DX用的,虽然一堆OpenGL程序也有用的,但是我一般只用png和tga, png不用说了,带a...

robslove
今天
1
0
Spring 事务提交回滚源码解析

前言 在上篇文章 Spring 事务初始化源码分析 中分析了 Spring 事务初始化的一个过程,当初始化完成后,Spring 是如何去获取事务,当目标方法异常后,又是如何进行回滚的,又或是目标方法执行...

TSMYK
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部