2017-05-19 4 views
2

Gibt es eine Möglichkeit, ein Artefakt mit AQL herunterzuladen?Artifactory AQL Download-Artefakt

Ich habe eine Abfrage gesendet mit:

curl -u user:pass \ 
-X POST https://artifactoryURL/artifactory/api/search/aql \ 
-H 'content-type: text/plain' \ 
-T query.aql 

Und meine query.aql:

items.find(
    { 
     "repo":{"$eq":"repo"}, 
     "$and": [ 
      { 
      "path": { "$match": "path/*"}, 
      "name": { "$match": "*.rpm"} 
      } 
     ] 
    } 
) 
.sort({ "$desc": ["modified"] }) 
.limit(1) 

Nun, da ich weiß, es gibt, was ich will, ist es eine Möglichkeit, die Anfrage von api/search/aql zu ändern etwas wie api/download/aql und diese Gegenstände bekommen?

EDIT:

Ich hatte auch versucht, diese JFrog cli mit dem zu tun, aber sie nicht vollständig AQL dort unterstützen (Art und Grenze funktionierte nicht).

Dies ist der Befehl, den ich versucht:

jfrog rt s --spec=query-aql.json 

Und die Spezifikation, die zu sortieren und zu begrenzen Ergebnisse fehlgeschlagen:

{ 
    "files": [ 
    { 
     "aql": { 
     "items.find": { 
      "repo": "repo", 
      "$and": [ 
      { 
       "path": { "$match": "path/*"}, 
       "name": { "$match": "*.rpm"} 
      } 
      ] 
     } 
     }, 
     "sort": { 
     "$asc": ["modified"] 
     }, 
     "limit": 1 
    } 
    ] 
} 

EDIT 2:

Added ein JFrog-cli -go-Ausgabe: https://github.com/JFrogDev/jfrog-cli-go/issues/56

Antwort

2

A n einfache Möglichkeit, Ihre aql Skript zu verwenden, um Dateien von artifactory zum Herunterladen ist die JFrog cli wie erwähnt verwenden hier: https://www.jfrog.com/confluence/display/CLI/CLI+for+JFrog+Artifactory#CLIforJFrogArtifactory-Download,CopyandMoveCommandsSpecSchema

Der cli kann als ausführbare Datei für Linux, Mac oder Windows herunter geladen werden und soll Ihre Bedürfnisse passen

Mit dem Befehl curl können Sie dann nur das Ergebnis Ihrer aql-Abfrage analysieren und eine Download-Anforderung für jede Datei ausführen.

+0

Die JFrog cli meine Ergebnisse zu sortieren gescheitert und zu begrenzen (siehe edit). Der größte Schmerz hier ist, dass für etwas sehr einfach muss ich eine High-Level-Sprache Parsing der zurückgegebenen JSON, wenn AQL sollte nur erlauben, meine Ergebnisse auf eins zu begrenzen und das zu bekommen. – DavidG

2

Ich war nur auf der Suche nach einer sehr ähnlichen Sache - verwenden Sie eine Download-Spezifikationsdatei, um das neueste Artefakt von einem bestimmten Repo und Pfad herunterzuladen. Es ist mir egal, ob ich AQL verwende oder nicht, ich möchte es nur in der Datei download-spec.json. Wenn Sie auf die link oben gehen, schauen Sie sich Beispiel 5 an.

für Ihr Beispiel Modifiziert:

{ 
    "files": [ 
    { 
    "pattern": "path/*.rpm", 
    "target": "my/download/path/", 
    "sortBy": "created", 
    "sortOrder": "desc", 
    "limit": 1, 
    } 
    ] 
}