jenkins构建maven聚合项目,发布jar包,可配置单独发布某个模块

创建项目

1.点击新建item,选择maven项目
jenkins构建maven聚合项目,发布jar包,可配置单独发布某个模块_第1张图片
2.配置
(1.1):这里可写项目描述,下面我是集成了gitlab,也可以集成git,自主选择。
jenkins构建maven聚合项目,发布jar包,可配置单独发布某个模块_第2张图片
(1.2):项目仓库地址,添加账号认证,以及选择要构建的分支
jenkins构建maven聚合项目,发布jar包,可配置单独发布某个模块_第3张图片
(1.3):触发器构建,可配置自动化构建,如果有代码提交就构建,也可主动,我这里是主动构建
jenkins构建maven聚合项目,发布jar包,可配置单独发布某个模块_第4张图片
(1.4) 最关键的地方,root pom :代表父工程pom文件,Goals and options:配置
要发布哪个子模块,pl后面就写那个子模块 ,pl意思是把相关配置项目一起打成jar包。
jenkins构建maven聚合项目,发布jar包,可配置单独发布某个模块_第5张图片

jenkins构建maven聚合项目,发布jar包,可配置单独发布某个模块_第6张图片
jenkins构建maven聚合项目,发布jar包,可配置单独发布某个模块_第7张图片
(1.5):构建成功后把jar包发送到服务器指定目录
Source files:jar包所在目录,这里是相对路径
Remove prefix: 删除旧的jar包
Remote directory: jar包上传的远程服务器目录,这里写绝对路径
Exec command: 执行shell命令,这里写的是shell脚本的绝对路径 restart:shell脚本执行参数,有4个,status,start,stop,restart

jenkins构建maven聚合项目,发布jar包,可配置单独发布某个模块_第8张图片
3.shell脚本
1.1 :一定要加source /etc/profile,否则脚本会执行失败

source /etc/profile
cat publish.sh 
#!/bin/bash
#这里可替换为你自己的执行程序,其他代码无需更改  
#配置相关参数
#jar包名称
APP_NAME=shop-0.0.1-SNAPSHOT.jar  
# 端口
SERVER_PORT=8085
# jar包所在目录
DIRECTION=shop
#配置文件目录,启动jar包指定外部配置文件
CONFIG_LOCATION=/opt/apps/sailing-project/config/application-test.yml 

#使用说明,用来提示输入参数  
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
    cd  /opt/apps/sailing-project/$DIRECTION
    nohup  java -jar  $APP_NAME --spring.config.location=$CONFIG_LOCATION --server.port=$SERVER_PORT> nohup.log  2>&1 &
   echo "${APP_NAME} is started."  
  fi  
}  

#停止方法  
stop(){  
  is_exist  
  if [ $? -eq "0" ]; then  
    kill -9 $pid  
    echo "${APP_NAME} stoped"
  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.2:nohup 命令后面不能跟jar包所在绝对路径,否则不会输出日志文件。
这个坑困扰了一天,在百般尝试之后终于解决,先 cd 到jar包所在目录,再执行nohup命令,完美解决。

4.实际开发过程中遇到的坑,以及解决方案,记录一下,如果你也遇到了这个问题,希望对你也有帮助!

你可能感兴趣的:(服务器部署,服务器,jenkins)