diff --git a/CleanArchitecture/Pro.Jenkinsfile b/CleanArchitecture/Pro.Jenkinsfile index 36b3a9b..94236ba 100644 --- a/CleanArchitecture/Pro.Jenkinsfile +++ b/CleanArchitecture/Pro.Jenkinsfile @@ -65,6 +65,46 @@ pipeline { + stage ('Cleanup Old Docker Images') { + steps { + script { + withCredentials([string(credentialsId: 'docker-registry-url-to-push', variable: 'REGISTRY_URL_PUSH')]) { + def registry = "${REGISTRY_URL_PUSH}" // Ajusta esto a tu URL de Docker Registry + def name = 'clean-architecture-backend' // Ajusta esto al nombre de tu imagen + + def buildNumber = env.BUILD_NUMBER.toInteger() + def startVersion = 1 + def endVersion = buildNumber - 3 // Para borrar hasta la versión "endVersion" + + for (int i = startVersion; i <= endVersion; i++) { + def versionToDelete = "0.0.${i}" + def fullImageNameToDelete = "${name}:${versionToDelete}" + + echo "Borrando la imagen ${registry}/${fullImageNameToDelete}" + + // Comando modificado para utilizar variables de Jenkins + sh """ + curl -v -sSL -X DELETE "http://${registry}/v2/${fullImageNameToDelete}/manifests/\$( + curl -sSL -I \ + -H "Accept: application/vnd.docker.distribution.manifest.v2+json" \ + "http://${registry}/v2/${fullImageNameToDelete}/manifests/\$( + curl -sSL "http://${registry}/v2/${fullImageNameToDelete}/tags/list" | jq -r '.tags[0]' + )" \ + | awk '\$1 == "Docker-Content-Digest:" { print \$2 }' \ + | tr -d \$'\r' \ + )" + """ + } + + // No olvides ejecutar la recolección de basura para liberar espacio realmente. + //echo "Ejecutando garbage collect en el Docker Registry" + //sh "docker exec -it docker-registry bin/registry garbage-collect /etc/docker/registry/config.yml" + } + } + } + } + + } //stages