JohanCalle
7/30/2019 - 4:10 PM

Deploy app GCP

pipeline {
    agent {
        label 'jenkins-dev-prod'
    }
    parameters {
      choice(name: 'stage', choices: ['qa', 'pr'], description: 'Ambiente')
      string(name: 'name_cluster', description: 'Cluster Ambiente')
      string(name: 'namespace', description: 'Namespace')
      choice(name: 'zone', choices: ['us-central1-b', 'us-central1-c','us-central1-a','us-central1-f'], description: 'Zona de despliegue')
      choice(name: 'project', choices:['nutresa-165613', 'nutresa-lab', 'nutresa-prod'], description: 'Proyecto')
    }
    environment{
        CREDENTIALQA = credentials('GCP_QA')
        CREDENTIALPR = credentials('GCP_PR')
    }
    stages {
        stage("Get Code"){
            steps{
                deleteDir()
            checkout([$class: 'GitSCM', branches: [[name: '*/master']], doGenerateSubmoduleConfigurations: false, extensions: [], gitTool: 'GitDefault', submoduleCfg: [], userRemoteConfigs: [[credentialsId: 'gitlab-infra', url: 'http://gitlab.gruponutresa.com/infra-as-code/deploy-efact-pr.git']]])
            }
        }
        stage("Prepare Environment"){
            steps{
                script{
                    if(stage == 'qa'){
                      env.PROJECT_GCP="nutresa-lab"
                      env.CREDENTIALS=CREDENTIALQA
                    } else if(stage == 'pr'){
                      env.PROJECT_GCP="nutresa-prod"
                      env.CREDENTIALS=CREDENTIALPR
                    }
                }
            }
        }
        stage("Connect to Cluster") {
            steps{
                   sh "gcloud container clusters get-credentials ${params.name_cluster} --zone ${params.zone} --project ${params.project}"
            }
        }
        stage("Create Namespace") {
            steps{ sh "kubectl create ns ${params.namespace}"
                
            }
        }    
        stage("Deploy ConfigMap"){
            steps{
                   sh "kubectl apply -f configmap.yaml"
            }
        }
        stage("Deploy Secrets"){
            steps{
                   sh "kubectl apply -f secrets.yaml"
            }
        }
        stage("Deploy Application") {
            steps{
                   sh "kubectl apply -f deployment.yaml"
            }
        }
        stage("Expose Application") {
            steps{
                   sh "kubectl apply -f loadBalancer.yaml"
            }
        }
    }
}