linux搭建jenkins自动化部署Maven方式

  • 1.安装配置jenkins
  • 2.先说下大致的步骤
  • 3.遇到的问题


1.安装配置jenkins

安装运行和配置jenkins在这就不再多说了

2.先说下大致的步骤

1.创建一个maven项目

输入名称,选择构建一个maven项目

jenkins maven 发布自动部署 jenkins自动部署maven启动jar_linux


输入描述

jenkins maven 发布自动部署 jenkins自动部署maven启动jar_linux_02


指定代码仓库地址以及分支

jenkins maven 发布自动部署 jenkins自动部署maven启动jar_spring_03


输入打包命令,点击高级,配置一些设置

jenkins maven 发布自动部署 jenkins自动部署maven启动jar_jar_04


jenkins maven 发布自动部署 jenkins自动部署maven启动jar_java_05


jenkins maven 发布自动部署 jenkins自动部署maven启动jar_jar_06

最后设置项目启动的脚本

jenkins maven 发布自动部署 jenkins自动部署maven启动jar_jar_07


点击保存完成。

这样就配置完成了。

脚本如下:

sh /usr/local/script/jar_start.sh /usr/local/jarProject/scheduled/target/ scheduled-1.0-SNAPSHOT.jar restart -Dspring.profiles.active=test

后面跟的参数都是和脚本内容相关的。
/usr/local/script/jar_start.sh :脚本所在绝对路径。
/usr/local/jarProject/scheduled/target/:jar包所在绝对路径。
scheduled-1.0-SNAPSHOT.jar:jar包名称。
restart:运行方式(start,stop,status,restart)。
-Dspring.profiles.active=test:springboot指定运行那个配置文件。

脚本内容(网上找的):可以自己该一些相应的参数。

#!/bin/bash
#使用说明,用来提示输入参数
usage() {
    echo "Usage: sh start.sh jarpath jarname [start|stop|restart|status] -Dspring.profiles.active=test -Dspring.profiles.active=test2 ..."
    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(){
    echo "开始启动..."
#    nohup java -jar ${APP_NAME}  >/dev/null 2>&1 & 
    echo "运行命令"  
    echo "执行jar参数为" ${params}
    echo "运行jar为" ${APP_PATH_NAME}
    nohup java -Xms256m -Xmx256m -Xss128m -jar ${params} ${APP_PATH_NAME} >/dev/null 2>&1 & 
    sleep 3;
    echo "启动结束"
}
#停止方法
stop(){
  echo "shutdown start..."
 if [[ `ps -ef|grep $APP_NAME|grep java` ]]; then
    ps -ef|grep $APP_NAME|grep java|awk '{print $2}'|xargs kill -9 >/dev/null 2>&1;
 fi;
 sleep 3;
 echo "shutdown finished..."
}
#输出运行状态
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
}
# 运行java命令
#java=$( echo $(type java) | awk '{print $2}')
#echo ${java}
# 当前目类jar全路径
APP_PATH_NAME=$1$2
APP_NAME=$2
echo "appname" $APP_NAME
echo "apppathname" $APP_PATH_NAME
#根据输入参数,选择执行对应方法,不输入则执行使用说明
for i in "$@"
do
  count=`expr $count + 1`;
  if [ $count -gt 3 ];then
 # jar 运行的参数,指定运行的配置文件
  echo $i;
  params=$i
  case "$3" in
    "start")
     start;
  ;;
     "stop")
     stop;
  ;;
     "restart")
     restart;
  ;;
    "status")
    status;
  ;;
    *)
    usage
    ;;
  esac
 fi;
done;

脚本文件创建完成后执行个命令

chmod +x test2.sh

将文件变成可执行文件。
然后这就完成了。

3.遇到的问题

配置网上都有,再说下遇到的问题吧。

问题1: 调用命令执行shell脚本的时候报 No such file or directory?

我以为还是和上次配置jenkins的时候遇到同样的问题,然后我就按照上次的方法解决,一直行不通啊。最后实在是搞不了,突然间发现就是配置执行脚本命令的时候脚本路径没有写绝对路径。。。。

问题2:打包完成启动报错:

本地jdea打包启动没有问题,jenkins用命令打包就出问题了。

jenkins maven 发布自动部署 jenkins自动部署maven启动jar_spring_08


这是因为项目的pom.xml没有指定启动类文件。

网上百度了一些方法,千说万说总有一个适合自己的,找了个把小时终于找到了:

pom文件中添加build:

<build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
<!--            <plugin>-->
<!--                <groupId>org.apache.maven.plugins</groupId>-->
<!--                <artifactId>maven-jar-plugin</artifactId>-->
<!--                <version>3.0.2</version>-->
<!--                <configuration>-->
<!--                    <archive>-->
<!--                        <manifest>-->
<!--                            <addClasspath>true</addClasspath>-->
<!--                            <mainClass>com.qcx.ScheduledApplication</mainClass> <!– 此处为主入口–>-->
<!--                        </manifest>-->
<!--                    </archive>-->
<!--                </configuration>-->
<!--            </plugin>-->
        </plugins>
    </build>

注释的和没注释的两种方法,看看哪个是对自己有用的。

问题3: 说什么服务期虚拟内存不足,

jenkins maven 发布自动部署 jenkins自动部署maven启动jar_spring_09


咱也不知道什么意思啊,就从网上百度着找找解决方法

这有一个 。

问题4:
打包成功,启动像么,怎么启动都没有反应。。
找了很久,最终发现是因为我在执行脚本的时候,添加了一些自己需要的配置参数,又没有放到最后,所以脚本获取参数的时候因为位置不对获取到错误的参数,导致脚本运行失败。