BetterManEddy

导航

 
// 需要在jenkins的Credentials设置中配置jenkins-harbor-creds、jenkins-k8s-config参数
pipeline {
    agent any
    environment {
        HARBOR_CREDS = credentials('jenkins-harbor-creds')
        K8S_CONFIG = credentials('jenkins-k8s-config')
        GIT_TAG = sh(returnStdout: true,script: 'git describe --tags --always').trim()
    }
    parameters {
        string(name: 'HARBOR_HOST', defaultValue: 'registry.shuame.org', description: 'harbor仓库地址')
        string(name: 'DOCKER_IMAGE', defaultValue: 'mp/web-login', description: 'docker镜像名')
        string(name: 'K8S_NAMESPACE', defaultValue: 'test', description: 'k8s的namespace名称')
    }
    stages {
        stage('CheckOut') {
            steps{
                checkout([$class: 'GitSCM', branches: [[name: '*/' + REF]], doGenerateSubmoduleConfigurations: false, extensions: [], submoduleCfg: [], userRemoteConfigs: [[credentialsId: 'c9b98967-64b4-416c-b10d-c5cf104538d6', url: 'http://8.8.8.git']]])            
            }
               
//        stage('Go Build') {
//          when { expression { env.GIT_TAG != null } }
//           steps {
//               script {
//                 // 默认将使用根路径的 Dockerfile 进行构建
//                docker.build('${params.HARBOR_HOST}/${params.DOCKER_IMAGE}:${GIT_TAG}')
// 
//                 }
//           }
//          }

         stage('Go Build') {
            when { 
                allOf {
                    expression { env.GIT_TAG != null }
                }
            }
            steps {
                unstash 'app'
                sh "docker login -u ${HARBOR_CREDS_USR} -p ${HARBOR_CREDS_PSW} ${params.HARBOR_HOST}"
                sh "docker build  -t ${params.HARBOR_HOST}/${params.DOCKER_IMAGE}:${GIT_TAG} ."
                sh "docker push ${params.HARBOR_HOST}/${params.DOCKER_IMAGE}:${GIT_TAG}"
                sh "docker rmi ${params.HARBOR_HOST}/${params.DOCKER_IMAGE}:${GIT_TAG}"
            }
            
         }

         stage('Deploy') {
            when { 
                allOf {
                    expression { env.GIT_TAG != null }
                }
            }
            steps {
                sh "mkdir -p ~/.kube"
                sh "echo ${K8S_CONFIG} | base64 -d > ~/.kube/config"
                sh "sed -e 's#{{IMAGE}}#${params.HARBOR_HOST}/${params.DOCKER_IMAGE}:${GIT_TAG}#g' k8s-deploy.yaml"
                sh "istioctl kube-inject -f k8s-deploy.yaml | kubectl apply -f  - -n ${K8S_NAMESPACE}"
            }
            
         } 
       } 
      }
}

 

posted on 2021-06-09 15:44  BetterManEddy  阅读(109)  评论(0)    收藏  举报