jenkins java jar_jenkins构建java程序发布jar包

jar包部署

通过 java -jar 方式运行 jar包.

创建项目

创建自由风格项目

参数化构建

05697f492ec8604bf0f6be504accfcc8.png

源码管理

c932e6d21bf9540ee0e457c7b4a7c25d.png

构建

14545398c9bbc70c37e3b3922003dce2.png

jar包构建的代码

主义脚本中 jar包名字 是构建之后的名字

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

[root@node2 jenkins]# cat deploy_java_jar.sh#!/bin/sh# 工作目录

CODE_DIR=$WORKSPACE

# 压缩包存放目录

TAR_DIR="/data/jenkins/${JOB_NAME}/"# 文件夹及文件名

FILE_DIR="${TAG_VERSION}_${JOB_BASE_NAME}"# 压缩文件全称

PACKAGE="${FILE_DIR}.tar.gz"# jar 包名字

JAR_NAME='hello-world.jar'# 构建命令

MVN_ORDER='/usr/local/maven/bin/mvn clean package'# 远程部署服务器地址

REMOTE_IP='172.16.0.64 172.16.0.63'# 远程部署服务器账号

REMOTE_USER=root

# 远程端口

REMOTE_PORT=22# 远程部署目录

REMOTE_DIR='/data/'

if [ ! -d ${TAR_DIR} ];then

mkdir ${TAR_DIR} -pecho "创建文件夹: ${TAR_DIR}"

fibuild_mvn() {echo "--------------------------[ mvn clean package ]---------------------------"cd ${CODE_DIR}

${MVN_ORDER}if [ $? -eq 0 ]; then

echo "构建成功: ${CODE_DIR}"

else

echo "构建失败: ${CODE_DIR}"exit1

fi}

cmp_package() {echo "--------------------------[ compress jar ]---------------------------"cd ${CODE_DIR}/target/ && tarzcf ${TAR_DIR}${PACKAGE} ${JAR_NAME}if [ $? -eq 0 ]; then

echo "打包成功: ${TAR_DIR}${PACKAGE}"

else

echo "打包失败: ${TAR_DIR}${PACKAGE}"exit1

fi}

scp_package() {echo "--------------------------[ remote rsync jar ]---------------------------"

for IP in ${REMOTE_IP};dorsync-arq --port=${REMOTE_PORT} ${TAR_DIR}${PACKAGE} ${REMOTE_USER}@${IP}:${REMOTE_DIR}if [ $? -eq 0 ]; then

echo "远程拷贝成功: $IP - ${TAR_DIR}${PACKAGE}"

else

echo "远程拷贝失败: $IP - ${TAR_DIR}${PACKAGE}"exit1

fi

done}

remote_untar() {echo "--------------------------[ remote untar jar ]---------------------------"

for IP in ${REMOTE_IP};do

ssh $IP "mkdir ${REMOTE_DIR}${FILE_DIR}"

ssh $IP "cd $REMOTE_DIR && tar xf ${PACKAGE} -C ${REMOTE_DIR}${FILE_DIR}"

ssh $IP "cd $REMOTE_DIR && rm -rf ${PACKAGE}"

if [ $? -eq 0 ]; then

echo "解压成功: $IP - ${PACKAGE}"

else

echo "解压失败: $IP - ${PACKAGE}"exit1

fi

done}

remote_ln() {

# 确保软件连目录原本就是软连接目录

#ssh $REMOTE_IP "cd $REMOTE_DIR && ln -snf ${REMOTE_DIR}/${TAR_NAME} html"

echo "--------------------------[ remote ln jar ]---------------------------"

for IP in ${REMOTE_IP};do

ssh $IP "cd $REMOTE_DIR && rm -rf ${JAR_NAME} && ln -s ${REMOTE_DIR}${FILE_DIR}/${JAR_NAME} ${JAR_NAME}"

if [ $? -eq 0 ]; then

echo "软连接成功: $IP - ${JAR_NAME}"

else

echo "软连接失败: $IP - ${JAR_NAME}"exit1

fi

done}

run_jar() {echo "--------------------------[ remote start jar ]---------------------------"

for IP in ${REMOTE_IP};do

ssh $IP "nohup java -jar ${REMOTE_DIR}$JAR_NAME >> ${REMOTE_DIR}${JAR_NAME}.out 2>&1 &"

if [ $? -eq 0 ]; then

echo "启动成功: $IP - ${JAR_NAME}"

else

echo "启动失败: $IP - {JAR_NAME}"exit1

fi

done}

stop_jar() {echo "--------------------------[ remote stop jar ]---------------------------"

for IP in ${REMOTE_IP};do

ssh $IP "ps -ef | grep ${JAR_NAME} | grep -v grep"

if [ $? -eq 0 ]; then

ssh $IP "ps -ef | grep ${JAR_NAME} | grep -v grep | awk '{print \$2}' | xargs kill -s 9"

if [ $? -eq 0 ]; then

echo "停止成功: $IP - ${JAR_NAME}"

else

echo "停止失败: $IP - ${JAR_NAME}"exit1

fi

else

echo "越过${IP}服务器: 没有启动${JAR_NAME}进程!"continuefi

done}

main() {

build_mvn;

cmp_package;

scp_package;

remote_untar;

stop_jar;

remote_ln;

run_jar;

}case $pattern indeploy)

#if [ "$GIT_COMMIT" == "$GIT_PREVIOUS_SUCCESSFUL_COMMIT" ];then

echo "构建失败该 ${TAG_VERSION} 版本号已部署"# exit1#else

echo "---------- 开始发布 版本:${TAG_VERSION} --------"mainecho "---------- 完成发布 版本:${TAG_VERSION} --------"#fi;;

rollback)echo "---------- 开始回滚 版本:${TAG_VERSION} --------"stop_jar;

remote_ln;

run_jar;echo "---------- 完成回滚 版本:${TAG_VERSION} --------";;*)echo "Usage: $0 {deploy | rollback }"exit1;;esac

jar包脚本

war包构建

war包基于tomcat jenkins 配置一样,区别代码

脚本代码

[root@node2 jenkins]# cat deploy_java_war.sh

#!/bin/sh

# 工作目录

CODE_DIR=$WORKSPACE

# 压缩包存放目录

TAR_DIR="/data/jenkins/${JOB_NAME}/"

# 文件名字

FILE_DIR="${TAR_VERSION}_${JOB_BASE_NAME}"

# 压缩文件全称

TAR_NAME="${FILE_DIR}.tar.gz"

# jar 包名字

JAR_NAME='hello-world-war-1.0.0.war'

# 构建命令

MVN_ORDER='/usr/local/maven/bin/mvn clean package'

# 远程部署服务器地址

REMOTE_IP='172.16.0.64 '

# 远程部署服务器账号

REMOTE_USER=root

# 远程端口

REMOTE_PORT=22

# 远程部署目录

REMOTE_DIR='/usr/local/tomcat/webapps/'

if [ ! -d ${TAR_DIR} ];then

mkdir ${TAR_DIR} -p

echo "创建文件夹: ${TAR_DIR}"

fi

build_mvn() {

echo "--------------------------[ mvn clean package ]---------------------------"

cd ${CODE_DIR}

${MVN_ORDER}

if [ $? -eq 0 ]; then

echo "构建成功: ${CODE_DIR}"

else

echo "构建失败: $ls

{CODE_DIR}"

exit 1

fi

}

cmp_package() {

echo "--------------------------[ compress jar ]---------------------------"

cd ${CODE_DIR}/target/ && tar zcf ${TAR_DIR}${TAR_NAME} ${JAR_NAME}

if [ $? -eq 0 ]; then

echo "打包成功: ${TAR_DIR}${TAR_NAME}"

else

echo "打包失败: ${TAR_DIR}${TAR_NAME}"

exit 1

fi

}

scp_package() {

echo "--------------------------[ remote rsync jar ]---------------------------"

for IP in ${REMOTE_IP};do

rsync -arq --port=${REMOTE_PORT} ${TAR_DIR}${TAR_NAME} ${REMOTE_USER}@${IP}:${REMOTE_DIR}

if [ $? -eq 0 ]; then

echo "远程拷贝成功: $IP - ${TAR_DIR}${TAR_NAME}"

else

echo "远程拷贝失败: $IP - ${TAR_DIR}${TAR_NAME}"

exit 1

fi

done

}

remote_untar() {

echo "--------------------------[ remote untar jar ]---------------------------"

for IP in ${REMOTE_IP};do

ssh $IP "mkdir ${REMOTE_DIR}${FILE_DIR}"

ssh $IP "cd $REMOTE_DIR && tar xf ${TAR_NAME} -C ${REMOTE_DIR}${FILE_DIR}"

ssh $IP "cd $REMOTE_DIR && rm -rf ${TAR_NAME}"

ssh $IP "cd $REMOTE_DIR${FILE_DIR} && unzip -q ${JAR_NAME}"

ssh $IP "cd $REMOTE_DIR${FILE_DIR} && rm -rf ${JAR_NAME}"

if [ $? -eq 0 ]; then

echo "解压成功: $IP - ${TAR_NAME}"

else

echo "解压失败: $IP - ${TAR_NAME}"

exit 1

fi

done

}

remote_ln() {

# 确保软件连目录原本就是软连接目录

# ssh $REMOTE_IP "cd $REMOTE_DIR && ln -snf ${REMOTE_DIR}/${TAR_NAME} html"

echo "--------------------------[ remote ln jar ]---------------------------"

for IP in ${REMOTE_IP};do

ssh $IP "cd $REMOTE_DIR && rm -rf ROOT && ln -s ${REMOTE_DIR}${FILE_DIR} ROOT"

if [ $? -eq 0 ]; then

echo "软连接成功: $IP - ${JAR_NAME}"

else

echo "软连接失败: $IP - ${JAR_NAME}"

exit 1

fi

done

}

run_jar() {

echo "--------------------------[ remote start jar ]---------------------------"

for IP in ${REMOTE_IP};do

ssh $IP "/usr/local/tomcat/bin/startup.sh"

if [ $? -eq 0 ]; then

echo "启动成功: $IP - ${JAR_NAME}"

else

echo "启动失败: $IP - {JAR_NAME}"

exit 1

fi

done

}

stop_jar() {

echo "--------------------------[ remote stop jar ]---------------------------"

for IP in ${REMOTE_IP};do

ssh $IP "ps -ef | grep tomcat | grep -v grep" &>/dev/null

if [ $? -eq 0 ]; then

ssh $IP "/usr/local/tomcat/bin/shutdown.sh"

if [ $? -eq 0 ]; then

echo "停止成功: $IP - ${JAR_NAME}"

else

echo "停止失败: $IP - ${JAR_NAME}"

exit 1

fi

else

echo "越过${IP}服务器: 没有启动tomcat!"

continue

fi

done

}

main() {

build_mvn;

cmp_package;

scp_package;

remote_untar;

stop_jar;

remote_ln;

run_jar;

}

case $pattern in

deploy)

if [ "$GIT_COMMIT" == "$GIT_PREVIOUS_SUCCESSFUL_COMMIT" ];then

echo "构建失败该 ${TAR_VERSION} 版本号已部署"

exit 1

else

echo "---------- 开始发布 版本:${TAR_VERSION} --------"

main

echo "---------- 完成发布 版本:${TAR_VERSION} --------"

fi

;;

rollback)

echo "---------- 开始回滚 版本:${TAR_VERSION} --------"

stop_jar;

remote_ln;

run_jar;

echo "---------- 完成回滚 版本:${TAR_VERSION} --------"

;;

*)

echo "Usage: $0 {deploy | rollback }"

exit 1

;;

esac

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值