美文网首页IT必备技能
jenkins+springboot+docker CI

jenkins+springboot+docker CI

作者: 刘凯_7013 | 来源:发表于2019-08-04 17:56 被阅读0次

    jenkins+springboot+docker 的可持续集成简易方案。

    参考以下文章

    jenkins+gitlab测试环境自动化部署
    jenkins持续集成的步骤

    安装docker 用来安装机器

    搭建docker 私服
    docker register私服

    springboot项目docker化
    springboot如何生成docker镜像

    下面介绍如何利用jenkins部署springboot的docker容器

    首先准备如下几步

    1. 安装docker 用来在目标机和jenkins上安装机器

    2.搭建docker 私服 搭建 docker register私服

    3.springboot项目docker化 springboot配置生成docker镜像

    1. jenkins+gitlab测试环境自动化部署

    第四步完成后,在构建步骤里添加如下脚本

    1. mvn package clean docker:build 命令打包docker文件到本地

    2. docker push 命令将打包好的镜像推送到register

    3. ssh到目标机 使用docker pull命令更新镜像,

    4 使用docker stop命令停掉目标机服务,docker rm命令删除旧镜像(注意,此处要删除是因为都用的一个版本,可以每次打不同版本的镜像也可以)

    1. 使用docker run 命令启动容器
    HOST_FILE=/data/code/scripts/hosts/****hosts
    REMOTE_USER=git
    
    ACTIVE_PROFILE=prod
    
    MAVEN_OPTS="clean package -P${ACTIVE_PROFILE} -Dapi.version=${BRANCH} -Dmaven.test.skip=true docker:build"
    PROJECT=projectName
    DOCKER_IMAGE=docker.registry.XXX.com:5000/groupid/projectName
    
    #https://yq.aliyun.com/ziliao/60417
    
    OLD_BUILD_ID=$BUILD_ID
    BUILD_ID=dontKillMe
    
    
    SERVESR=($(awk '{print $1}' $HOST_FILE))
    
    WS=`pwd`
    
    function print_env() {
        echo "MAVEN_OPTS:${MAVEN_OPTS}"
        echo "ACTIVE_PROFILE:${ACTIVE_PROFILE}"
        echo "OLD_BUILD_ID:${OLD_BUILD_ID}"
        echo "BUILD_ID:${BUILD_ID}"
    }
    
    
    
    function build() {
    
        echo "Building ..."
        mvn ${MAVEN_OPTS}
        echo "Building finished."
        echo "Pushing to registry ..."
        docker push ${DOCKER_IMAGE}
        echo "Pushed to registry ..."
        
    
    }
    
    function install() {
        
        
        
       echo "Dispacthing package to servers..."
       
       for dest_server in ${SERVESR[@]}
       do
           echo "Dispacthing package to ${dest_server}"
           
           ssh ${REMOTE_USER}@${dest_server} "
           
             echo "Installing ${PROJECT} from docker registry "
        
             sudo docker pull ${DOCKER_IMAGE}
             
             mkdir -p /home/log/projectName
            
             echo "Installed ${PROJECT} from docker registry "
           
          "       
       
       done 
       
    }
    
    function restart() {
     for dest_server in ${SERVESR[@]}
       do
        ssh ${REMOTE_USER}@${dest_server} "     
            sudo docker stop ${PROJECT}
            sudo docker rm ${PROJECT}
            sudo docker run -d  -p 9189:9189 -it -v /home/log/projectName:/home/log/projectName --restart=always --name ${PROJECT} docker.registry..com:5000/groupid/projectName
        "       
     done
    }
    
    function main() {
    
        if [ "true" == "${ONLY_RESTART}" ]; then 
            restart
        else
            print_env &&
            build   &&
            install &&
            restart
        fi
        
    }
    
    main 
    

    相关文章

      网友评论

        本文标题:jenkins+springboot+docker CI

        本文链接:https://www.haomeiwen.com/subject/hkmydctx.html