pipeline {
  environment {
    // Configuración del entorno
    // Harbor
    registryUrl = 'harborstgsvcs.telmex.com'  // URL del registro de contenedores
    registryCredential = 'harborjgs'          // ID de credenciales para el registro
    projectName = 'daas'                      // Nombre del proyecto
    dockerImageName = "servicedao"            // Nombre de la imagen Docker
  }

  agent {
    label 'master'  // Etiqueta del nodo donde se ejecutará la tarea
  }

  stages {
    stage('Checkout Source') {
      steps {
        // Paso para clonar el repositorio de Git via Token(Imporante)
        git branch: 'JenkinsTest',
            credentialsId: 'sgm-devops-test',   // ID de las credenciales de Git
            url: 'https://gitlab.triara.com/trjgas/nube_services_dao.git'  // URL del repositorio Git
      }
    }

    stage('Build image') {
      steps {
        script {
          // Paso para construir la imagen Docker
          dockerImage = docker.build dockerImageName
        }
      }
    }

    stage('Configure external Harbor credentials') { 
      steps {
        withCredentials([usernamePassword(credentialsId: registryCredential, passwordVariable: 'PASSWORD', usernameVariable: 'USERNAME')]) {
          sh """
            # Configuración de las credenciales Docker en el archivo config.json
            echo '{ "auths": { "${registryUrl}": { "username": "'\$USERNAME'", "password": "'\$PASSWORD'" } } }' > /var/lib/jenkins/.docker/config.json
          """
        }
      }
    }

    stage('Tagging and Pushing Image') {
      steps {
        script {
          // Etiquetado y envío de la imagen Docker al registro
          def imageTag = "${projectName}/${dockerImageName}:latest"
          sh "docker tag ${dockerImageName}:latest ${registryUrl}/${imageTag}"
          sh "docker push ${registryUrl}/${imageTag}"
        }
      }
    }

  stage('Download Image and Deploy') {
  steps {
    script {
      def namespace = 'daas-stg-qa'  // Espacio de nombres
      def deploymentName = 'net-dao-test'  // Nombre del deployment
      def imageTag = "${projectName}/${dockerImageName}:latest"

      // Configura el contexto del clúster de Kubernetes
      withKubeConfig([credentialsId: 'tkgs-cluster-2-config-proxied', serverUrl: 'https://172.30.205.116:6443']) {
        // Aplicar el archivo YAML al clúster de Kubernetes
        def podYAML = readFile('pod.yaml')
        sh "echo '''${podYAML}''' | kubectl apply -n ${namespace} -f -"

        // Puedes agregar más comandos relacionados con el clúster si es necesario
      }
    }
  }
}
    
  }
}
