Jenkins+git+maven+docker cicd部署 四

 接下来是开始更新代码编译打包构建环节了

     stages {
        stage('  更新代码 '){
            steps {
   echo "update"
            checkout([$class: 'GitSCM', branches: [[name: '*/base']], doGenerateSubmoduleConfigurations: false, extensions: [], submoduleCfg: [], userRemoteConfigs: [[url: 'git@xxxxxxx.git']]])
            }
        }

-----这里用的是阿里云的git仓库,开发人员将代码push到仓库上,我们这里就会拉取一次新版本的代码下来

     stage('构建代码'){
         steps{
            script{
    echo "build"
             sh '''
              mvn clean install -Dmaven.test.skip=true
              '''
            }
         }
     }

-----这里开始构建代码,因为是java的应用,所以需要利用到maven ,即mvn clean install来编译

      stage('镜像构建'){
         steps{
            script{
             echo "build ${build_mode}"
             sh '''
               if [ "${build_mode}" != "" ];then
                   /usr/local/bin/docker-compose  build  ${build_mode}
               else
                   /usr/local/bin/docker-compose  build
               fi
               '''
            }
         }
     }

-----这里是镜像构建,引用了一个值$build_mode,这里是构建的时候需要选择的发布的项目,因项目还有区分到几个子项目,可以对单个项目进行升级。

注意!利用的docker-compose,所以服务器上需要安装好docker-compose。dockerfile文件会在git仓库上拉取下来,就可以直接build了。

 

      stage('容器启动'){
         steps{
         script{
               sh '''
               if [ "${build_mode}" != "" ];then
                  /usr/local/bin/docker-compose  stop ${build_mode}
                  /usr/local/bin/docker-compose  rm   -f ${build_mode}
                  /usr/local/bin/docker-compose  up -d ${build_mode}
               else
                 /usr/local/bin/docker-compose  stop
                 /usr/local/bin/docker-compose  rm   -f
                 /usr/local/bin/docker-compose  up  -d
               fi
               '''
           }
                }
           }

 -----这里开始利用docker-compose拉起容器了,用到build_mode参数,即构建流水线时,选择的子项目(默认是全部),先删除原有容器,在对应新的镜像拉起容器。

stage('Git Tag'){
         steps{
           script{
               sh '''
                if [ "${Tag_Message}" == "" ];then
                     Tag_Message=${BUILD_NUMBER}
                fi
                if [ "${Save_Tag_Name}" != "" ];then
                   /usr/local/git/bin/git  tag -a  ${Save_Tag_Name} -m "${Tag_Message}"
                   /usr/local/git/bin/git push origin --tags
                else
                   echo "No Tag Message!NO tag!!!!!"
                  
                fi
                '''
           }
               
           }
         }
     

 -----这里就是打个tag方便日后进行回滚动作。基本上就讲完了,当然自己写的也是没这么严谨。如果不介意需要完整pipeline 可以邮箱我,809518385@qq.com

posted on 2020-10-15 11:48  Cutecatkk  阅读(222)  评论(0)    收藏  举报