jenkins构建java脚本

#!/bin/bash
echo "First argument is: $1"
echo "Second argument is: $2"

#开始时间 时间戳
startTime=`date +'%Y-%m-%d %H:%M:%S'`

#接口项目站点路径(目录按照各自配置)
APP_PATH=/home/app/$1
#APP_PATH=/Library/WebServer/Documents/java/crm-admin/target

#jar包文件名称
APP_NAME=$APP_PATH/$1.jar
echo "appName: $APP_NAME"

#日志文件名称
LOG_FILE=$APP_PATH/$1.log
echo "LOG_FILE: $LOG_FILE"

#启动环境   # 如果需要配置数据和redis,请在 application-prod.yml中修改, 用jar命令修改即可
APP_YML=--spring.profiles.active=$2
echo "APP_YML: $APP_YML"

#APP_CONFIG=--spring.config.location=$APP_PATH/
#echo "APP_CONFIG: $APP_CONFIG"

#数据库配置

rm -rf $LOG_FILE

echo "开始停止 crm-admin 项目进程"
#查询进程,并杀掉当前jar/java程序

pid=`ps -ef|grep $APP_NAME | grep -v grep | awk '{print $2}'`
if [ $pid ];then
  echo "pid: $pid"
  kill -9 $pid
  echo "crm-admin 项目进程进程终止成功"
fi

sleep 2

#判断jar包文件是否存在,如果存在启动jar包,并时时查看启动日志

if test -e $APP_NAME;then
  echo '文件存在,开始启动此程序...'

# 启动jar包,指向日志文件,2>&1 & 表示打开或指向同一个日志文件  --spring.profiles.active=prod 启动 prod环境


  nohup java -jar $APP_NAME $APP_YML > $LOG_FILE 2>&1 &
  echo "正在发布中,请稍后......"
  sleep 10s

  #通过检测日志来判断
  while [ -f $LOG_FILE ]
  do
      success=`grep "Tomcat started" $LOG_FILE`
      if [[ "$success" != "" ]]
      then
#          echo "crm-admin start ........."
          break
      else
#          echo "crm-admin Running ......."
          sleep 1s
      fi

#      echo "开始检测启动失败标记"
      fail=`grep "Fail" $LOG_FILE`
      if [[ "$fail" != "" ]]
      then
          echo "项目启动失败"
          tail -f $LOG_FILE
          break
      else
#          echo "crm-admin Running ......."
          sleep 1s
      fi

  done
  echo "crm-admin Started Success"

endTime=`date +'%Y-%m-%d %H:%M:%S'`
startSecond=$(date --date="$startTime" +%s);
endSecond=$(date --date="$endTime" +%s);

total=$((endSecond-startSecond))
# shellcheck disable=SC2027
echo "本次运行时间: "$total"s"
# shellcheck disable=SC2086
echo "当前时间:"$endTime


else
  echo '$APP_NAME 文件不存在,请检查。'
fi

#在 $APP_NAME 同级目录下运行  ./start.sh 命令即可启动项目。

start.sh(启动脚本)

crm-admin(你的项目名)

Jenkins

cd /home/app(你的脚本位置)
sh start.sh crm-admin dev

(dev是环境比如你的spring下面resources下面有application.yml,application-dev.yml,application-prod.yml)

我是java程序员,这个脚本拷贝过来,我感觉这个缺少了一些功能,后面找到了,我在完善一下,jar包备份,log备份,可以方便看日志和回滚等,这个脚本测试环境跑跑还行

这个stop.sh 和Jenkins无关,启动脚本里面有


#接口项目站点路径(目录按照各自配置)
APP_PATH=/www/wwwroot/crm-admin/

#jar包文件名称
APP_NAME=$APP_PATH/crm-admin.jar

echo "开始停止 crm-admin 项目进程"
#查询进程,并杀掉当前jar/java程序

pid=`ps -ef|grep $APP_NAME | grep -v grep | awk '{print $2}'`

echo "pid: $pid "

if [ $pid ];then
  echo "pid: $pid"
  kill -9 $pid
  echo "crm-admin 项目进程进程终止成功"
else
  echo "未找到对应服务"
fi

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Jenkins是一个开源的持续集成工具,可以帮助开发团队自动构建、自动测试和自动发布软件。对于构建Java服务的自动构建和自动发布,我们可以在Jenkins中进行如下配置和操作。 首先,我们需要在Jenkins中配置我们的项目。我们可以使用Jenkins提供的用户界面来创建一个新的项目,并将其与我们的Java服务代码库进行集成。在项目配置中,我们可以设置源代码管理以及构建触发的方式。 接下来,我们需要在构建过程中执行一系列的操作。对于Java服务的构建,我们可以使用Maven或Gradle等构建工具。在Jenkins构建过程中,我们可以配置执行命令或脚本以进行代码编译、单元测试、代码质量检查等操作。如果构建成功,我们可以将构建结果保存在Jenkins中,便于后续的分析和查看。 在构建完成后,我们可以针对不同的环境进行自动化的发布操作。例如,我们可以根据不同的分支或标签,将构建结果自动发布到开发、测试或生产环境。在发布过程中,我们可以使用一些部署工具,如Docker或Kubernetes,来将Java服务部署到相应的环境中。 另外,我们还可以配置Jenkins的通知功能,让团队成员及时获取构建和发布的状态。通过邮件、Slack或其他通知渠道,我们可以将构建和发布的结果发送给相关人员,以便于他们及时了解和处理可能出现的问题。 总之,利用Jenkins进行Java服务的自动构建和自动发布,可以提高开发团队的工作效率和软件质量。通过自动化的构建和发布过程,我们可以减少重复的工作和潜在的错误,使团队更加专注于软件开发和创新。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值