利用jenkins自由风格用shell脚本进行所有项目发版(java项目)

书到用时方恨少,事非经过不知难。这篇文章主要讲述利用jenkins自由风格用shell脚本进行所有项目发版(java项目)相关的知识,希望能为你提供帮助。
一jenkins设置
1 设置4个变量
如图所示:分别是,分支名字,项目名,主机,端口
选择参数化,有选项参数,字符参数,都可以

利用jenkins自由风格用shell脚本进行所有项目发版(java项目)

文章图片
利用jenkins自由风格用shell脚本进行所有项目发版(java项目)

文章图片
2 要执行的shell脚本
利用jenkins自由风格用shell脚本进行所有项目发版(java项目)

文章图片
#此脚本包含打包,备份,拷贝,启动功能 sudo su root -c "sh /data/os/jenkins/deploy-data-statistical.sh $project_name $branch $host $port"

二shell脚本 1deploy-data-statistical.sh 脚本内容:
#!/bin/bash project_name=$1 #项目名字 branch=$2 #分支 host=$3 port=$4 currentTime=`date "+%Y%m%d_%H%M%S"`#代码路径 dir="/root/.jenkins/workspace/$project_name"#远端项目路径remote_dir="/data/server_home/$project_name" cd $dir & & git pull & & git checkout $branch & & git pull echo "################开始编译##########################" sleep 2 cd $dir & & mvnclean -Dmaven.test.skip=true kotlin:compile package echo "####################开始执行备份######################" #执行备份 ssh root@$host -p$port "[ ! -d $remote_dir/backup ] & & mkdir -p $remote_dir/backup || echo \'存在\' " ssh root@$host -p$port"mv $remote_dir/*.jar $remote_dir/backup/" echo "#################开始拷贝jar包#######################" #拷贝jar包到远程主机 scp -P$port -r $dir/target/*.jar root@$host:$remote_dir #不带日志的jar包 #查看新的jar包名字 jarname=`ssh root@$host -p$port "ls -lt /data/server_home/$project_name/*.jar" | awk \'{print $9}\' |awk -F \'[/]\' \'{print $5}\'` #启动服务 echo "#################开始启动服务#######################"ssh root@$host -p$port "cd $remote_dir& & sh common_restart.sh$jarname $project_name"

2common_restart.sh启动jar包的脚本
#!/bin/sh source /etc/profile java_HOME=/usr/bin/javaproject_name=$2 ARTIFACT_ID=$project_name CURRENT_PATH=/data/server_home/$project_name APP_NAME=$1 SERVER_PID=0 DATETIME=`date +%F-%H-%M-%S`start() { checkpid if [ "$SERVER_PID" != "" ] then echo "$APP_NAME is running!please use restart command." exit 1; fi if [ "$JAVA_HOME" != "" ] then /usr/bin/nohup java -Xms512m -Xmx1g -jar $CURRENT_PATH/$APP_NAME--spring.profiles.active=zgy-pre--server.port=8084 > $CURRENT_PATH/${DATETIME}-running.log & sleep 5 checkpid if [ "$SERVER_PID" != "" ] then echo -e "\\e[0; 35m$APP_NAME\\e[0m start over in path: \\033[46; 31m$CURRENT_PATH\\033[0m,and running pid is \\033[46; 31m$SERVER_PID\\033[0m" echo -e "Please see the \\033[46; 31mrunning.log\\033[0m for detatil" else echo -e "\\e[0; 35m$APP_NAME\\e[0m start \\033[46; 31mFAILURE\\033[0m" echo -e "Please see the \\033[46; 31mrunning.log\\033[0m for detatil" exit 1; fi else echo -e "JAVA_HOME can\'t acquire" exit 1; fi } stop() { checkpid if [ "$SERVER_PID" != "" ] then echo -e "\\e[0; 35m$APP_NAME\\e[0m running pid is \\033[46; 31m$SERVER_PID\\033[0m, kill it at once" kill -9 $SERVER_PID fi } checkpid(){ SERVER_PID=$(ps -aef |grep java |grep "$ARTIFACT_ID" |grep -v grep | awk \'{print $2}\') } restart() { stop sleep 5 start } restart

当然重启脚本里的启动环境变量和端口也都可以设置成变量,传入脚本,我这里没有弄。
最后,就可以利用jenkins去发版了,如图所示:
利用jenkins自由风格用shell脚本进行所有项目发版(java项目)

文章图片

这里面的4个参数,都可以直接在这个上面去更改,传入到shell脚本里。
【利用jenkins自由风格用shell脚本进行所有项目发版(java项目)】

    推荐阅读