This commit is contained in:
Alejandro Sarmiento
2024-03-11 19:56:35 +01:00
parent 3b325481c9
commit b1d392e085

View File

@@ -26,21 +26,33 @@ pipeline {
} }
} }
stage ('Push to Docker Registry') {
stage ('Push to Docker Registry') {
steps { steps {
script { script {
def version = "0.0.${env.BUILD_NUMBER}" def version = "0.0.${env.BUILD_NUMBER}"
sh "docker build --build-arg ENVIRONMENT=${ASP_ENVIRONMENT} -t clean-architecture-backend:${version} ./CleanArchitecture/" def imageName = "clean-architecture-backend:${version}"
def fullImageName = "${DOCKER_REGISTRY_URL}/${imageName}"
sh "docker images" // Construir la imagen
sh "docker build --build-arg ENVIRONMENT=${ASP_ENVIRONMENT} -t ${imageName} ./CleanArchitecture/"
// Utiliza las credenciales de Docker para subir la imagen // Etiqueta la imagen para Docker Registry y la sube
docker.withRegistry('https://dockerregistry.alexdev.es', 'dockerregistryalexdev') { docker.withRegistry('https://dockerregistry.alexdev.es', 'dockerregistryalexdev') {
// Etiqueta la imagen para Docker Registry sh "docker tag ${imageName} ${fullImageName}"
sh "docker tag clean-architecture-backend:${version} dockerregistry.alexdev.es/clean-architecture-backend:${version}" sh "docker push ${fullImageName}"
// Sube la imagen a Docker Registry
sh "docker push dockerregistry.alexdev.es/clean-architecture-backend:${version}"
} }
// 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 {
// Eliminar la imagen del agente de Jenkins
sh "docker rmi ${env.FULL_IMAGE_NAME}"
} }
} }
} }
@@ -52,18 +64,21 @@ pipeline {
def deleteUntilVersion = currentVersion - 3 def deleteUntilVersion = currentVersion - 3
for (int i = 1; i <= deleteUntilVersion; i++) { for (int i = 1; i <= deleteUntilVersion; i++) {
def tag = "0.0.${i}" def tag = "0.0.${i}"
// Obtener el Docker-Content-Digest // 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() 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 // 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}" 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<73>n ${tag} con digest ${digest}" echo "Eliminada la versi<73>n ${tag} con digest ${digest}"
} }
} }
} }
} }
} //stages } //stages