Gitlab+Jenkins+SonarQube 实现CICD(四),自动化部署springboot项目

自动化部署springboot项目

安装插件

插件名称:Maven Integration

安装maven

在jenkins所在服务安装apache-maven-3.8.1,并配置私服和使用jdk1.8编译。

  1. 下载安装包

    安装包:apache-maven-3.8.1

  2. 解压到指定目录
    我解压到/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
    
  3. 配置仓库
    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>
    

配置全局变量

  1. 配置maven
    在这里插入图片描述

配置自动化部署springboot项目

做好准备工作后,现在开始配置一个springboot项目的自动化部署,我基于之前上传到gitlab上的springboot项目,项目名称为license-server。

  1. 创建maven项目
    在这里插入图片描述

  2. 添加描述,保留10个版本
    在这里插入图片描述

  3. 配置gitlab标签参数在这里插入图片描述

  4. 配置部署参数,部署或回退
    在这里插入图片描述

  5. 设置git地址和构建分支
    在这里插入图片描述

  6. 设置maven打包命令

    clean package -DskipTests
    

    在这里插入图片描述

  7. 设置脚本

    sh -x /home/jenkins_script/license-server/license-server.sh
    

    在这里插入图片描述

  8. 编写脚本 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
    
    
  9. 点击构建,查看构建日志
    在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值