jenkins 自动化部署 微服务到Docker容器 以及vue 项目到 nginx

接着上面来继续部署(因为 public over ssh 启用我们这边的话准备用ssh脚本直接 免密登录执行pull 镜像和 启动镜像)
jenkin 之前的打包过程可以去看我的这篇博客:
jenkins 流水线拉取 Gitee项目 打包 微服务 制作 Docker 镜像 并 push 到 harbor(踩坑集锦)

如何设置免密登录我们这边就不多说了 下面我们先来改造下 上篇文章中脚本的问题
第一步:
jenkins 自动化部署 微服务到Docker容器 以及vue 项目到 nginx_第1张图片
在微服务名称后面加上@端口 一会我们远程启动端口的时候会用到 并设置展示的值
第二步:
修改一下脚本 获取到项目名称和 端口
jenkins 自动化部署 微服务到Docker容器 以及vue 项目到 nginx_第2张图片
第三步:
添加部署的脚本

//上传到镜像仓库
node{
      stage('clone'){
            checkout([$class: 'GitSCM', branches: [[name: "*/${branch}"]], extensions: [], userRemoteConfigs: [[credentialsId: 'd03a452e-7214-4c9b-9e23-d4c170f86fa4', url: 'https://gitee.com/xkmayun/bugvip.git']]])
          
      }
      //打包公共模块
      stage("打包公共模块"){
            sh "mvn -f bugvip-common clean install -Dmaven.test.skip=true"
      }
      def selectedProjectNames="${project_name}".split(",")
       def tag= "latest"
       //harbor地址
       def harbor_url="192.168.10.167:85"
       //镜像库的名称
       def harbor_project="bugvip"
       //harbor凭证
       def harbor_auth="3c3e7ac0-3ca6-4453-b6ef-35b949c3cff2"
       def serveAddres="192.168.10.220"
       stage('编译微服务'){
       			for(int i =0;i<selectedProjectNames.length;i++){
                       def projectInfo=selectedProjectNames[i];
                       //获取当前名称
                       def projectName="${projectInfo}".split("@")[0]
                       //获取当前微服务的端口
                       def projectPort="${projectInfo}".split("@")[1]
                       sh "mvn -f ${projectName} clean package -Dmaven.test.skip=true dockerfile:build"
                        //定义镜像名称
                        def imageName="${projectName}:${tag}"
                        //对镜像打上标签
                        sh "docker tag ${imageName} ${harbor_url}/${harbor_project}/${imageName}"
                        //把镜像推送到 harbor
                           withCredentials([usernamePassword(credentialsId: "${harbor_auth}", passwordVariable: 'password', usernameVariable: 'username')]) {
                        // //     //登录harbor
                              sh "docker login -u ${username} -p ${password} ${harbor_url}"
                        //     //镜像上传
                             sh "docker push ${harbor_url}/${harbor_project}/${imageName}"

                          //   sh "echo 镜像上传成功"
                                //免密 登录目标服务器
                                echo '----------------------免密 登录目标服务器----------------------'
                             sh """ ssh root@${serveAddres} <<EOF
                              docker stop ${projectName} || true                               
                              docker rm ${projectName} ||true                               
                              docker pull ${harbor_url}/${harbor_project}/${imageName}      
                              docker rmi \$(docker images -f 'dangling=true' -q)
                              docker run --name ${projectName} -p ${projectPort}:8080 -v /data/docker_log:/tmp/logs  -d ${harbor_url}/${harbor_project}/${imageName}
EOF"""
                            }
                   }
// 
                 //             
       	}
       stage('删除多余的镜像'){
           echo '----------------------删除Tag为的Docker镜像----------------------'
       	  sh 'docker rmi $(docker images -f "dangling=true" -q)'
       	}
}


jenkins 自动化部署 微服务到Docker容器 以及vue 项目到 nginx_第3张图片

部署vue项目的脚本

node{
 stage('clone'){
            checkout([$class: 'GitSCM', branches: [[name: "*/${branch}"]], extensions: [], userRemoteConfigs: [[credentialsId: 'd03a452e-7214-4c9b-9e23-d4c170f86fa4', url: 'https://gitee.com/xkmayun/bossVue.git']]])
            
      }
      def serveAddres="192.168.10.220"
     stage("打包部署"){
         nodejs('nodejs'){
             sh '''
             npm install
             npm run build:prod//注意这个打包命令 有的是 npm run build
             '''
         }
         sh "scp -r  dist/**  192.168.10.220:/usr/share/nginx/html "
//       sh """ ssh root@${serveAddres} <
      
      
// EOF"""
    }
      
}

jenkins 自动化部署 微服务到Docker容器 以及vue 项目到 nginx_第4张图片

你可能感兴趣的:(工具,jenkins,vue.js,nginx)