jenkins 解决构建成功后进程消失的问题

最近模块拆分,独立出了几个服务。上线流程并不复杂,只需要在指定目录执行bash deploy.sh master即可上线master分支。但是架不住模块太多,每天在上线流程上也花费了不少时间,所以尝试搭了个jenkins来自动化上线。上线时遇到了一个小坑,jenkins已经输出了启动成功的日志,但是实际上服务并没有跑起来,也就是说服务启动以后又被kill掉了。上网找了找资料,得出结论是jenkins杀掉了刚启动的服务。

服务被杀的原因是:jenkins默认会在构建完成后杀死构建过程中由jenkins中的shell命令触发的衍生进程。

我在jenkins中调用bash deploy.sh master,虽然有supervisord保护我的服务,但是jenkins将supervisord和服务一同杀掉了。在网上找到了两种解决办法,亲测有效,两种方法中我个人更推荐第二种,方法三是我自己想到的,亲测也有效哟~:

方法一:

修改配置,启动jenkins时禁止其杀死衍生进程

在/etc/sysconfig/jenkins中加入参数-Dhudson.util.ProcessTree.disable=true

即java -Dhudson.util.ProcessTree.disable=true -jar jenkins.war

方法二:

修改构建号,使jenkins找不到衍生进程

OLD_BUILD_ID=$BUILD_ID

BUILD_ID=dontKillMe

bash deploy.sh master

BUILD_ID=$OLD_BUILD_ID

方法三:

这是我自己想到的方法,也确实生效了。我们访问生产环境需要先登录跳板机器,然后从跳板机器跳到线上服务器,所以我把jenkins部署到跳板机上,在jenkins的shell脚本中使用ssh脚本访问线上机器。

sh online.sh

cd webserver/server/***

bash deploy.sh master

这样启动之后jenkins杀死的是跳板机上衍生出的ssh进程而不会影响真正线上服务器的进程

希望对大家有所帮助~

原文地址:https://www.cnblogs.com/baiyb/p/9080485.html

时间: 2024-11-08 04:49:10

jenkins 解决构建成功后进程消失的问题的相关文章

【Devops】【docker】【CI/CD】关于jenkins构建成功后一步,执行的shell命令详解

1.展示这段shell命令 #===================================================================================== #=================================定义初始化变量====================================== #====================================================================

jenkins将构建成功或失败的信息发送给指定URL(eg: pomelo采用jenkins持续集成)

先提供一个思路供大家参考,想将构建成功或者失败的信息发送给指定URL的话,可以这样:1.A构建后触发另一个构建B,构建B执行某个插件2.插件的功能:   (1)利用jenkins API获取构建A最后一次的构建信息,eg: http://192.168.212.73:8080/job/41_start_mongoDB/lastBuild/api/json (2)将获取到的构建信息(可以根据需求第二次封装)发送到指定URL 插件的内容其实就是http请求,可以用自己熟悉的语言写. 具体实现内容待更

Jenkins构建成功后,Shell脚本发布Java项目

查看当前系统Java版本的命令: java -version 如果显示Java版本号,说明已经正确安装,如果显示没有该命令,需要自行安装Java: 在执行项目的脚本前加上source /etc/profile; 完整的脚本为: (/var/lib/jenkins/workspace/demoSecurity/target/xxx.jar   ) source /etc/profile java -jar /var/lib/jenkins/workspace/demoSecurity/target

Android基于jenkins全自动构建打包---------Windows版本(Android,Jenkins,360加固,Email,QRcode,参数构建,蒲公英)

Android打包喝咖啡系列(Windows版) 这篇博客主要讲述的内容: 1.windows上部署Jenkins https://jenkins.io 2.基于SVN或Git https://github.com/Codetroupe/JenKinsTestAPP 3.Android项目参数化自动构建 4.自动将APK上传至蒲公英 https://www.pgyer.com   5.自动发Email到指定邮箱提示构建结果 6.自动本地360插件加固apk包http://jiagu.360.cn

SVN+Maven+Tomcat+Jenkins持续构建

一.准备工作 1.1安装软件 安装JDK.SVN.Maven.Tomcat.Jenkins及必要插件. 1.2安装jenkins所需插件 最开始安装jenkins时选择安装默认的插件. 其他插件: Maven Integration:构建maven项目 Publish Over SSH:用于将构建好的项目发送至 Subversion Plug-in:连接svn,默认安装插件中有该插件. 1.3配置JAVA_HOME.MAVEN_HOME 此处看一些教程上勾选的是,但是自身在最后构建项目时一直提示

jenkins每次构建前删除工作目录操作

step1: 安装Workspace Cleanup Plugin插件 step2: 构建前清理 构建后清理, 在构建后添加操作delete workspace when build is done 参考文档: jenkins每次构建完成后清除工作空间的文件 jenkins每次构建前删除工作目录操作 原文地址:https://www.cnblogs.com/kaerxifa/p/12355504.html

【转】Jenkins配置Git push后自动构建

[实战]Jenkins配置Git push后自动构建 # 前言   Jenkins 持续构建集成是软件版本迭代的一大利器,对于前端攻城狮来说,本身对服务器的接触就少,也并不愿意去做这个事.Jenkins持续构建省去了繁琐的服务器替换包的过程,同时有历史构建记录和每次构建的变更记录,这为我们回退和检查构建情况提供了便利.   本文假设你已经搭建了一些基础环境,如Git环境,Node环境等.如未处理请自行百度 # Jenkins配置步骤 1. 在Jenkins中进入你要配置自动构建的项目 要设置自动

项目部署到tomcat6.0启动成功后访问页面报500错误解决方法

如题:项目部署到tomcat6.0启动成功后访问页面报500错误解决方法,很奇葩,启动的时候没有任何问题,但输入访问地址后报500,去年国庆放假前夕,为这个问题伤神了半天最后解决了,今天又碰到了,乍一看摸不着头,后面仔细回想了下,迅速解决了问题. 原因:项目里面的jar和tomcat里面lib里面的jar重复了. 解决方法: 1.要么更换tomcat7或之后的版本,之后的版本就不会出现这个问题. 2.去部署之后的tomcat的webapps\项目名\WEB-INF\lib 里面删掉jsp-api

Jenkins构建完成后通过SVN Publisher Plugin上传文件到指定的SVN(教程收集)

SVN Publisher Plugin:https://wiki.jenkins-ci.org/display/JENKINS/SVN+Publisher 构建完成后的文件,比如Maven打的war包,可以通过SVN Publisher Plugin插件上次到指定的SVN,下面是收集的教程: http://blog.csdn.net/hemingwang0902/article/details/44488897 http://blog.csdn.net/qiaojiahe/article/de