CI系列 - 使用Jenkins发布SpringBoot Jar包项目

前提条件

  1. 确保Jenkins已安装Publish Over SSH插件
    用于把构建好的war包发送到目标远程服务器中、在远程服务器中执行命令。
  2. 使用Git需要安装Git插件,使用svn就要安装Subversion插件

发布步骤

  1. 先在系统管理中->系统设置中增加SSH Server
    CI系列 - 使用Jenkins发布SpringBoot Jar包项目_第1张图片
    Name:名字
    Hostname:目标服务器Ip
    Username:登录用户名
    Remote Directory:连接到远程服务器哪个目录
    Password:密码(使用密码就勾选Use password authentication)
    其他设置根据情况选填即可
    填写完成点击Test Configuration提示“Success”表示可以连接上远程服务器
    点击保存

  2. 新建一个项目,输入项目名称,选择“构建一个Maven项目”
    CI系列 - 使用Jenkins发布SpringBoot Jar包项目_第2张图片
    点击OK

  3. 配置源码管理
    CI系列 - 使用Jenkins发布SpringBoot Jar包项目_第3张图片
    我这以git演示,svn大同小异
    Repository URL:项目git地址
    Credentials:git凭证
    Branch Specifier (blank for ‘any’): 如果您想跟踪存储库中的特定分支,请指定分支。如果保留为空,所有的分支都将被检查变更并构建。
    高级部分一般不用配置,根据具体情况选择配置

  4. 配置Build
    在这里插入图片描述
    Root POM:根Pom位置(相对于模块根目录),如果为空,则默认为pom.xml
    Goals and options:指定要执行的目标,例如“clean install”或“deploy”。该字段还可以接受Maven的任何其他命令行选项,如"-e"或"-DskipTests=true"。
    高级部分一般不用配置,根据具体情况选择配置

  5. 配置Post Steps(关键部分
    Add post-build setp选择Send files or execute commands over SSH
    CI系列 - 使用Jenkins发布SpringBoot Jar包项目_第4张图片
    Run only if build succeeds:只有在构建成功时才运行(一般选这个即可)、Run only if build succeeds or is unstable:只有在构建成功或不稳定时才运行 、 Run regardless of build result:不管构建结果如何都运行
    Name:目标服务器(刚刚在系统配置中加的目标服务器)
    Source files:需要上传到服务器的文件。这个字符串是一个用逗号分隔的包含列表,用于一个Ant文件集,例如。 “** /*.jar” 。此文件集的基本目录是工作区。
    Remove prefix:发送到目标服务器要删除的父目录
    Remote directory:目标服务器目录(相对系统配置中的Remote Directory)
    Exec command:要在远程服务器上执行的命令,此命令将在任何文件传输完成后在远程服务器上执行。
    SSH传输集必须包括源文件模式、Exec命令或两者。如果两者都存在,则在执行命令前先传输文件。如果您想在文件传输之前执行,使用2个传输集,并将Exec命令移动到包含源文件模式的传输集之前。
    tunis.sh:

    #!/bin/sh
    #defined
    
    #帮助信息
    help()
    {
           
       cat <<- EOF
      Desc: 用于jenkins启动服务
      Usage: ./tunis.sh <要启用的服务jar包> [<用于remote denug端口>]
      EOF
       exit 0
    }
    
    #校验参数
    if [[ -z "$1" ]]; then
    	echo "please input param target jar "
    	exit 0
    fi
    #输出帮助信息
    if test "$1" = "--help" -o "$1" = "-h"
    then
    	help;
    fi
    cd /data/ms
    #检查文件是否存在
    if test ! -e $1
    then
    	echo "file is not exist"
    	exit 0
    fi
    
    # 终止已存在进程
    ID=`ps -ef | grep java | grep $1 | awk '{print $2}'`
    if [[ -z "$ID" ]]; then
    	echo "already kill"
    else
    	echo $ID
    	echo "-------------"
    	kill -9 $ID
    	echo "kill $ID done"
    	echo "-------------"
    	# 休眠2秒,等待进程被停止
    	sleep 2
    fi
    
    #启动参数堆内存512M;年轻永久代使用默认比例,不做设置;元空间为128M;关闭字节码校验;禁止手动GC
    JAVA_OPTS=" -Xms512m -Xmx512m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=128m -Xverify:none -XX:+DisableExplicitGC"
    
    echo "start project"
    #判断是否携带debug参数端口
    if [ -z "$2" ]
    then
    	nohup /usr/local/jdk1.8.0/bin/java $JAVA_OPTS  -jar /data/ms/$1 --spring.profiles.active=test > /data/datalog/$1.log  2>&1 &
    else
     	echo "debug model, port \"$2\""
     	nohup /usr/local/jdk1.8.0/bin/java $JAVA_OPTS  -Xdebug -Xrunjdwp:server=y,transport=dt_socket,address=$2,suspend=n -jar /data/ms/$1 --spring.profiles.active=test > /data/datalog/$1.log  2>&1 &
    fi
    

    tunis.sh是启动应用的命令。
    最后点击保存。

  6. 最后点击立即构建即可。点击Console Output可查看执行日志。
    在这里插入图片描述
    提示Success成功,大功告成。

总结

构建过程:

  1. 拉取最新代码
  2. 打包编译代码
  3. 将打包好的项目发送至目标远程服务器
  4. 执行命令启用最新打包好的应用

文中只是简单介绍基本使用,Jenkins功能非常强大,提供超过1000个插件来支持构建、部署、自动化, 满足任何项目的需要。

你可能感兴趣的:(Jenkins,java,linux,git,jenkins,ci/cd)