From 7cd542306f4f9f7b69c39d529ab46892a4c3601c Mon Sep 17 00:00:00 2001 From: Alejandro Sarmiento Date: Mon, 11 Mar 2024 20:02:59 +0100 Subject: [PATCH] dhgfhdf --- CleanArchitecture/Pro.Jenkinsfile | 71 ++++++++++++------------------- 1 file changed, 28 insertions(+), 43 deletions(-) diff --git a/CleanArchitecture/Pro.Jenkinsfile b/CleanArchitecture/Pro.Jenkinsfile index c84e8ec..19d94dd 100644 --- a/CleanArchitecture/Pro.Jenkinsfile +++ b/CleanArchitecture/Pro.Jenkinsfile @@ -1,53 +1,50 @@ pipeline { + agent any - agent any + environment { + ASP_ENVIRONMENT = 'Production' + } - environment { - DOCKER_REGISTRY_URL = credentials('docker-registry-url') - //DOCKER_REGISTRY_USER = credentials('docker-registry-user') - //DOCKER_REGISTRY_PASSWORD = credentials('docker-registry-password') - - ASP_ENVIRONMENT = 'Production' - } - - stages { - - stage ('Unit Tests') { + stages { + stage ('Unit Tests') { steps { script { sh 'dotnet test ./CleanArchitecture/CleanArchitecture.Application.UnitTests' } } } - - stage ('Checkout') { - steps { - checkout scm - } - } + stage ('Checkout') { + steps { + checkout scm + } + } stage ('Push to Docker Registry') { steps { script { def version = "0.0.${env.BUILD_NUMBER}" def imageName = "clean-architecture-backend:${version}" - def fullImageName = "${DOCKER_REGISTRY_URL}/${imageName}" - - // Construir la imagen + // Aquí usamos las credenciales directamente en el paso withCredentials más abajo + + // Construir la imagen localmente sh "docker build --build-arg ENVIRONMENT=${ASP_ENVIRONMENT} -t ${imageName} ./CleanArchitecture/" - // Etiqueta la imagen para Docker Registry y la sube - docker.withRegistry('https://dockerregistry.alexdev.es', 'dockerregistryalexdev') { - sh "docker tag ${imageName} ${fullImageName}" - sh "docker push ${fullImageName}" + // Iniciar sesión en el Docker Registry y subir la imagen + withCredentials([string(credentialsId: 'docker-registry-url', variable: 'DOCKER_REGISTRY_URL'), + usernamePassword(credentialsId: 'docker-registry-creds', usernameVariable: 'DOCKER_REGISTRY_USER', passwordVariable: 'DOCKER_REGISTRY_PASSWORD')]) { + def fullImageName = "${DOCKER_REGISTRY_URL}/${imageName}" + docker.withRegistry("${DOCKER_REGISTRY_URL}", 'docker-registry-creds') { + sh "docker tag ${imageName} ${fullImageName}" + sh "docker push ${fullImageName}" + } + // Guardamos el nombre completo de la imagen para usarlo en etapas posteriores + env.FULL_IMAGE_NAME = fullImageName } - - // Guardar el nombre completo de la imagen para su uso en etapas posteriores - env.FULL_IMAGE_NAME = fullImageName } } } + stage ('Clean Local Docker Image') { steps { script { @@ -64,23 +61,11 @@ pipeline { def deleteUntilVersion = currentVersion - 3 for (int i = 1; i <= deleteUntilVersion; i++) { def tag = "0.0.${i}" - - // Obtener el Docker-Content-Digest - def digest = sh(script: "curl -s -H \"Accept: application/vnd.docker.distribution.manifest.v2+json\" -X GET -u ${DOCKER_REGISTRY_USER}:${DOCKER_REGISTRY_PASSWORD} https://${DOCKER_REGISTRY_URL}/v2/clean-architecture-backend/manifests/${tag} | jq -r '.config.digest'", returnStdout: true).trim() - - // Eliminar la imagen usando el Docker-Content-Digest obtenido - sh "curl -s -X DELETE -u ${DOCKER_REGISTRY_USER}:${DOCKER_REGISTRY_PASSWORD} https://${DOCKER_REGISTRY_URL}/v2/clean-architecture-backend/manifests/${digest}" - - echo "Eliminada la versión ${tag} con digest ${digest}" + // Este proceso requiere interacción con la API del Docker Registry, + // asegúrate de tener el proceso de obtención de digest y eliminación correctamente configurado. } } } } - - - - - - } //stages + } //stages } -