自动化部署springboot项目
安装插件
插件名称:Maven Integration
安装maven
在jenkins所在服务安装apache-maven-3.8.1,并配置私服和使用jdk1.8编译。
-
下载安装包
-
解压到指定目录
我解压到/home/maven-3.8.1目录下了。
配置环境变量vim /etc/profile
设置环境变量
export M2_HOME=/home/maven-3.8.1/apache-maven-3.8.1 export PATH=${M2_HOME}/bin:${PATH}
生效环境变量
source /etc/profile
-
配置仓库
maven默认使用的是远程仓库,我们单位内部搭建了私服,我这里修改了依赖拉取地址:
配置文件地址:/home/maven-3.8.1/apache-maven-3.8.1/conf/settings.xml<mirror> <id>yfh-central</id> <mirrorOf>*</mirrorOf> <name>yfh-central</name> <url>http://10.0.10.11:8081/artifactory/yfh-central</url> </mirror>
配置全局变量
- 配置maven
配置自动化部署springboot项目
做好准备工作后,现在开始配置一个springboot项目的自动化部署,我基于之前上传到gitlab上的springboot项目,项目名称为license-server。
-
创建maven项目
-
添加描述,保留10个版本
-
配置gitlab标签参数
-
配置部署参数,部署或回退
-
设置git地址和构建分支
-
设置maven打包命令
clean package -DskipTests
-
设置脚本
sh -x /home/jenkins_script/license-server/license-server.sh
-
编写脚本 license-server.sh
#!/usr/bin/bash DATE=$(date +%Y-%m-%d-%H-%S) web_server="10.0.10.11" target_base=/home/java-project/license-server NAME=${DATE}-${git_version} # 1.进入项目目录,将项目内容进行打包 get_code(){ cd ${WORKSPACE} } # 2.将内容通过scp拷贝至web集群组 scp_web_server(){ for hosts in ${web_server} do scp ./target/*.jar root@${hosts}:${target_base}/tmp/license-server-${NAME}.jar ssh root@${hosts} "ps -ef | grep license-server | grep -v grep | awk '{print \$2}' | xargs kill -9 rm -rf ${target_base}/*.jar cp ${target_base}/tmp/license-server-${NAME}.jar ${target_base}/license-server-${NAME}.jar java -jar ${target_base}/license-server-${NAME}.jar > ${target_base}/out.log & tail -n 500 out.log" done } deploy(){ get_code scp_web_server } rollback(){ for hosts in ${web_server} do back_file=$(ssh root@${hosts} "find ${target_base}/tmp/ -maxdepth 1 -type f -name "license-server-\*-${git_version}.jar"") ssh root@${hosts} "ps -ef | grep license-server | grep -v grep | awk '{print \$2}' | xargs kill -9 rm -rf ${target_base}/*.jar cp ${back_file} ${target_base}/ java -jar ${target_base}/license-server-*.jar > ${target_base}/out.log & tail -n 500 out.log" done } if [ $deploy_env == "deploy" ];then if [ ${GIT_COMMIT} == ${GIT_PREVIOUS_SUCCESSFUL_COMMIT} ];then echo "你已经部署过该${git_version}版本" exit 1 else deploy fi elif [ $deploy_env == "rollback" ];then rollback fi
-
点击构建,查看构建日志