Jenkins 打包maven项目并发布

一、新建项目

1、输入任务名称

image.png

2、选择构建一个maven项目

3、点击确定

二、配置常规参数

image.png

1、添加项目描述

2、如果是多节点机器,可指定机器部署

3、其他默认即可

image.png

三、配置源码管理

1、选择代码管理,比如git

2、输入地址

3、添加凭据,建议以ssh登录

4、指定分支,默认*/master

image.png

四、构建触发器、构建环境、pre steps

默认配置即可

五、build

goals and options:打包命令,不要加mvn,默认前缀会加


image.png

六、post steps

1、选择 run only if build succeeds:只有在构建成功后再运行下面步骤

2、选择 send files or execute commands over ssh

image.png

使用ssh免密传输服务器需要先配置ssh key (已配置可忽略)
1、Jenkins机器生成 私钥ssh-keygen默认在~ssh下生成id_rsaid_rsa.pub
2、复制id_rsa.pub内容到部署机器~ssh下authorized_keys
3、Jenkins机器ssh root@部署机器IP测试是否成功
4、Jenkins > 系统管理 >全局设置,往下翻到 ssh server

name:随便写
hostname:部署机器IP
Private Key: Jenkins 的 id_rsa
directory: / 根目录
user:root
5、点击 test ,显示 Success 即可

3、配置 send files or execute commands over ssh

name:下拉选择上面配的服务器
source files:Jenkins成功打的包存地址,一般在项目目录下target下面,例如:包在tatget/*.jar
remove prefix:去除前缀,传到远程服务器上去掉此路径,比如:为空的话,传到服务器的地址为 上面全局配的 目录起始位置,即 /target 目录下
remote directory: 远程服务器 包存放位置,如果上面为空的话,即 /data/app/jks/target
如果remove prefix配置为 /target 即包放在/data/app/jks下面

image.png

exec command: 传送包完成执行的命令,需要在部署服务器对应目录下新建shell脚本
image.png

4、点击高级

exec timeout:脚本执行超时时间,尽量大一些,不然脚本没执行完任务就结束了
exec in pty:执行脚本后超时会自动退出


image.png

七、构建设置、构建后操作

默认即可,也可根据需要配置参数
点击保存

八、restart-jks.sh脚本

jar包放到一个目录即可

#!/bin/env bash
export PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
source /etc/profile

#export BUILD_ID=dontKillMe
projectName=""     #项目名称
DIR=""      #包存放绝对路径

echo -e "\e[0;32m 重启服务... \e[0m"

echo -e "\e[31m kill $projectName进程... \e[0m"
ps -aux | grep java | grep ${projectName} | awk '{print $2}' | xargs kill -9

echo -e "\e[32m kill $projectName进程 成功 \e[0m"
echo -e "\e[0;32m 开始备份至 ${DIR}/${projectName}.jarbak ... \e[0m"
cp ${DIR}/${projectName}.jar ${DIR}/${projectName}.jarbak
cp ${DIR}/jks/${projectName}.jar ${DIR}/${projectName}.jar
echo -e "\e[0;32m 备份完成: ${DIR}/${projectName}.jarbak  \e[0m"
sleep "1"

echo -e "\e[32m 启动服务... \e[0m"
nohup java  -jar ${DIR}/${projectName}.jar > ${DIR}/${projectName}.log 2>&1 &
if [[ $? = 0 ]];then
        sleep 28
        tail -n 200 ${DIR}/${projectName}.log
fi
aaa=`ps -aux | grep java | grep ${projectName} | awk '{print $2}'`
if [[ -n "${aaa}" ]];then
    echo -e "\e[32m 启动服务成功 \e[0m"
    exit 0
else
    echo -e "\e[32m 启动服务失败 \e[0m"
    exit 1
fi

点击立即构建,试试吧!

你可能感兴趣的:(Jenkins 打包maven项目并发布)