周末学习了一下 jekins。安装、配置、构建一路很顺利。但是问题来了,最后jenkins 提示构建成功,并且提示脚本执行成功。

但是 Centos 上的 查了一下jar 文件的进程并没有启动成功。

 

安装,部署,配置,网上的博客一大堆。这里给出一两个范本。

https://www.cnblogs.com/ityouknow/archive/2017/11/26/7899349.html

http://www.itmuch.com/work/jenkins-in-action/

感谢周立大哥, 和 纯洁的微笑大哥。

我这里的配置是打包成功zhi之后,执行 front-v2-run.sh restart的脚本。

这是一个根据输入参数 status/stop/start/restart 来 后台运行jar 文件的 脚本。

 

脚本内容。

#!/bin/bash
#这里可替换为你自己的执行程序,其他代码无需更改
APP_NAME=/data/jenkins/app/front-v2.jar

#使用说明,用来提示输入参数
usage() {
    echo "Usage: sh 执行脚本.sh [start|stop|restart|status]"
    exit 1
}

#检查程序是否在运行
is_exist(){
  pid=`ps -ef|grep $APP_NAME|grep -v grep|awk '{print $2}' `
  #如果不存在返回1,存在返回0     
  if [ -z "${pid}" ]; then
   return 1
  else
    return 0
  fi
}

#启动方法
start(){
  is_exist
  if [ $? -eq "0" ]; then
    echo "${APP_NAME} is already running. pid=${pid} ."
  else
    nohup java -jar $APP_NAME > /data/jenkins/app/admin.log 2&>1 &
    echo "App is runing success!"
  fi
}

#停止方法
stop(){
  is_exist
  if [ $? -eq "0" ]; then
    kill -9 $pid
  else
    echo "${APP_NAME} is not running"
  fi
}

#输出运行状态
status(){
  is_exist
  if [ $? -eq "0" ]; then
    echo "${APP_NAME} is running. Pid is ${pid}"
  else
    echo "${APP_NAME} is NOT running."
  fi
}

#重启
restart(){
  stop
  start
}

#根据输入参数,选择执行对应方法,不输入则执行使用说明
case "$1" in
  "start")
    start
    ;;
  "stop")
    stop
    ;;
  "status")
    status
    ;;
  "restart")
    restart
    ;;
  *)
    usage
    ;;
esac

 

============================================

经过一段时间的查找。刚开始看到说是这样的。

1.Jenkins默认会在Build结束后Kill掉所有的衍生进程。(设置不杀掉启动脚本的配置)

  https://blog.csdn.net/draven1122/article/details/84971885。具体信息在这位大佬的博客里。反正我试了不管用

2.使用组合指令。

  https://blog.csdn.net/caixingyunzi/article/details/80714339 。 这个大佬的组合指令,他说是解决了,但是我这仍然不好使。

3.jenkins 在执行shell 命令时,只认 绝对路径 而且我的JAVA_HOME也是没问题的。

https://geekori.com/details.php?que_id=23802

https://blog.csdn.net/frank_passion/article/details/72782700

然后就把脚本里的    nohup java -jar $APP_NAME > /data/jenkins/app/admin.log 2&>1  & 改成了 

 nohup /usr/local/jdk1.8/bin/java -jar $APP_NAME > /data/jenkins/app/admin.log 2&>1 &

 

然后重新构建, jenkins 构建成功, ps -ef | grep front-v2.jar . 

ok 就这样解决了。

 

再次感谢各位大佬的博客。

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐