es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo proporcionar una ruta específica de Jfrog Artifactory en un script groovy de Jenkins para la estrategia de retención.

Quiero usar una ruta específica de artifactory para la estrategia de rotación de registros. Necesitamos mantener solo las 5 últimas compilaciones en artifactory. Somos capaces de cargar con éxito la compilación de Jenkins en la ruta especificada de artifactory, sin embargo, no podemos vincular la ruta a la variable buildInfo para eliminación/retención. Si no especificamos una ruta, no arroja un error, pero va a algún directorio predeterminado y no elimina la compilación de la ruta especificada en el manifiesto. No podemos usar CURL ya que la configuración del artefacto está definida a nivel de administrador. Por lo tanto, el nombre de usuario y la contraseña deben obtenerse de la variable de entorno.

stage('Artifactory: Subir y retención') {
    def server = Artifactory.server 'abc-xyz'
    def buildInfo = Artifactory.newBuildInfo()

    def upload_spec_bin = """{
        "files": [
            {
                "pattern": "${cyncapp_binary_name}",
                "target": "generic-local/orgproj/cyncapp/${env.BUILD_NUMBER}/"
            }
        ]
    }"""
    server.upload spec: upload_spec_bin

    def upload_spec_manifest = """{
        "files": [
            {
                "pattern": "cyncapp_manifest.txt",
                "target": "generic-local/orgproj/cyncapp/${env.BUILD_NUMBER}/"
            }
        ]
    }"""
    server.upload spec: upload_spec_manifest

    //def build_info = server.upload spec: upload_spec_manifest        
    build_info.retention maxBuilds: 5,deleteBuildArtifacts: true        
    server.publishBuildInfo buildInfo
}
Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para utilizar una ruta específica del artifactory para la estrategia de rotación de registros y mantener solo las 5 últimas compilaciones en el artifactory, puedes modificar “upload_spec_bin” y “upload_spec_manifest” para incluir la ruta donde deseas cargar los archivos, así como establecer el valor de “maxBuilds” en 5 para limitar el número de compilaciones en el artifactory.

    Sin embargo, mencionaste que no puedes vincular la ruta a la variable “buildInfo” para la eliminación/retención. Para esto, puedes utilizar la variable “buildInfo” para especificar la ruta para la eliminación/retención.

    Aquí tienes un fragmento de código actualizado:

    stage('Artifactory: Carga y retención') {
        def server = Artifactory.server 'abc-xyz'
        def buildInfo = Artifactory.newBuildInfo()   
    
        def upload_spec_bin = """{
            "files": [
                {
                    "pattern": "${cyncapp_binary_name}",
                    "target": "generic-local/orgproj/cyncapp/${env.BUILD_NUMBER}/"
                }
            ]
        }"""
        server.upload spec: upload_spec_bin
    
        def upload_spec_manifest = """{
            "files": [
                {
                    "pattern": "cyncapp_manifest.txt",
                    "target": "generic-local/orgproj/cyncapp/${env.BUILD_NUMBER}/"
                }
            ]
        }"""
        server.upload spec: upload_spec_manifest
    
        buildInfo = server.getBuildInfo(env.JOB_NAME, env.BUILD_NUMBER)
        buildInfo.retention maxBuilds: 5, deleteBuildArtifacts: true, buildNumbersNotToBeDiscarded: [env.BUILD_NUMBER]
        server.publishBuildInfo buildInfo
    }
    

    En este fragmento de código actualizado, primero definimos las variables “server” y “buildInfo”. Luego modificamos “upload_spec_bin” y “upload_spec_manifest” para incluir la ruta deseada para los archivos.

    A continuación, utilizamos el método “server.getBuildInfo” para obtener la información de compilación para el trabajo y el número de compilación actual. Establecemos el valor “maxBuilds” en 5 y “deleteBuildArtifacts” en true para limitar el número de compilaciones en el artifactory y eliminar cualquier compilación/artifacto excesivo.

    Por último, publicamos la información de compilación en el artifactory utilizando el método “server.publishBuildInfo”.

Comments are closed.