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.

Eliminando artefactos antiguos de una lista de repositorios.

Estoy intentando eliminar artefactos (mayores de 6 meses) de una lista de repositorios en JFrog Artifactory.
Estoy creando un archivo de especificación como se muestra a continuación y usando esa especificación para eliminar usando la interfaz de línea de comandos de JFrog.
Mi pregunta es si hay alguna manera de ejecutar el AQL en bucles en lugar de actualizar manualmente el nombre del repositorio: foobar

{
   "files": [
      {
         "aql": {
            "items.find": {
               "repo": "foobar",
               "$or": [
                  {
                     "$and": [
                        {
                           "modified": {
                              "$lt": "2021-06-06T21:26:52.000Z"
                           }
                        }
                     ]
                  }
               ]
            }
         }
      }
   ]
}

jfrog rt del –spec /tmp/foo.spec –dry-run

Quiero ejecutar el AQL en bucles y solo cambiará el nombre del repositorio. ¿Hay alguna manera de hacerlo?

Tags:  ,

Answer

  1. Avatar for davy.ai

    Sí, puedes ejecutar la consulta AQL en bucles para eliminar artefactos de una lista de registros en JFrog Artifactory. En lugar de tener un archivo de especificación con un nombre de repositorio estático, puedes usar un script para cambiar dinámicamente el nombre del repositorio y ejecutar la consulta AQL en un bucle.

    Aquí tienes un ejemplo de script Bash que utiliza un bucle for para iterar a través de una lista de nombres de repositorio y ejecutar la consulta AQL para cada repositorio:

    #!/bin/bash
    
    # define la consulta AQL como una cadena de texto
    query='items.find({
      "repo": "%s",
      "$or": [
        {
          "$and": [
            {
              "modified": { "$lt": "2021-06-06T21:26:52.000Z" }
            }
          ]
        }
      ]
    })'
    
    # define la lista de repositorios
    repos=("foobar" "baz" "qux")
    
    # itera a través de la lista de repositorios y ejecuta la consulta AQL
    for repo in "${repos[@]}"
    do
      printf -v aql_query "$query" "$repo"
      jfrog rt del --spec <(echo "{\"files\": [{\"aql\": $aql_query}]}" ) --dry-run
    done
    

    En este script, la consulta AQL se define como una cadena de texto con un marcador de posición para el nombre del repositorio. Luego, el script define una lista de nombres de repositorio y recorre la lista, sustituyendo el nombre del repositorio en la cadena de consulta y ejecutando la consulta AQL utilizando el comando jfrog rt del.

    Ten en cuenta que en este ejemplo, la consulta AQL se define utilizando la sintaxis de JavaScript en lugar de la sintaxis del lenguaje de consulta de Artifactory (AQL). Esto se debe a que JFrog CLI admite expresiones de JavaScript además de consultas AQL. Sin embargo, puedes modificar fácilmente el script para usar la sintaxis de AQL si lo prefieres.

Comments are closed.