2016-03-31 10 views
3

私はArtifactoryを初めて使っています。現在、リポジトリ内のすべての成果物を一覧表示するプロジェクトに取り組んでいます。artifactory(jfrog)のリポジトリにあるすべてのアーティファクトをリストアップ

Artifactoryバージョン:(CERTの検証をオフ)4.1.3 Proの

curl -u uname:password -X POST -k https://artifactory.xxxx.com/artifactory/api/search/aql -d "items.find({"repo":"war"}).include("name","repo","path","size").sort({"$desc":["size"]}).limit(10)" 


<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> 
<html><head> 
<title>404 Not Found</title> 
</head><body> 
<h1>Not Found</h1> 
<p>The requested URL /artifactory/api/search/aql was not found on this server.</p> 
<hr> 
<address>Apache/2.2.31 (Amazon) Server at artifactory.xxxx.com Port 443</address> 
</body></html> 

それはエラー(不正な要求)を投げています。以下のrepos war、war-dev、war-release、webapp、webapp-dev(Artifactoryデータベースとhttpリクエストからreposのリストを取得する)にアーティファクトを列挙してみてください。 RESTを使用して成果物をリストアップしようとしました

は匿名で呼び出しますが、何のログが$ARTIFACTORY_HOME/logs/request_trace.log $ARTIFACTORY_HOME/logs/request.log

ではありませんartdb(Artifactoryデータベース)とartifactoryのURLからレポのリストを取得します。リストされたreposは、1つのものとは異なっています。どちらが正しいか?非常に多くのレポ

mysql> select distinct(repo) from nodes; 
| war        | 
| war-dev       | 
| war-release      | 

https://artifactory.xxxx.com/artifactory/repo/ 
webapp/              
webapp-dev/              

を上場

は、誰かがレポで成果物のリストをしてください見つけるのを助けることができます。ありがとうございました!

答えて

8

AQLを使用してください。そして、あなたのクエリがほとんど良いです(あなたはwarまたはwebで始まるすべてのリポジトリのため$matchを忘れてしまった。問題はカールです。あなたは、コマンドラインでのクエリ文字列を作成したい場合は、すべての内部"$をエスケープする必要があります。ここでは、作業のクエリです:

curl -u uname:password -X POST -k https://artifactory.xxxx.com/artifactory/api/search/aql -d "items.find({\"type\" : \"file\",\"\$or\":[{\"repo\" : {\"\$match\" : \"war*\"}, \"repo\" : {\"\$match\" : \"web*\"} }]}).include(\"name\",\"repo\",\"path\",\"size\").sort({\"\$desc\": [\"size\"]}).limit(10)" 

さて、これは地獄である代わりに、テキストファイルにクエリを書き込み、-d @filename.aqlでそれを渡して検討する。この場合、あなたはすべてのエスケープを必要としないし、照会します。次のようになります。

items.find({ 
    "type" : "file", 
    "$or":[{ 
    "repo" : {"$match" : "war*"}, 
    "repo" : {"$match" : "web*"} }]}) 
    .include("name","repo","path","size") 
    .sort({"$desc": ["size"]}) 
    .limit(10) 
+0

こんにちは@JBaruch filename.aql。私はあなたの提案で試しましたが、運がありません。それはアーティファクト自体にある問題のように見えます。 – user6136315

+0

こんにちは@JBaruch。私はあなたの提案で試しましたが、運がありません。それはアーティファクト自体にある問題のように見えます。 curlコマンドを-kで更新しました(証明書検証をスキップするために追加されました)。私はそれがアーティファクトに達することができないと思う。 $ curl -u pkjogi:Ilikemyself @ 123 -X POST -k https://artifactory.clearslideng.com/artifactory/api/search/aql -d "items.find({\"タイプ\ ":\"ファイル\ "、" \ "、\" \ "、\" \ "、\" (\ "名前\"、\ "レポ\"、\ "パス\"、\ "サイズ\") :[\ "size \"]})。limit(10) " – user6136315

+1

簡単なことをしよう。 curlから[システムのping要求](https://www.jfrog.com/confluence/display/RTF/Artifactory+REST+API#ArtifactoryRESTAPI-SystemHealthPing)を実行します。失敗した場合は、curlの出力に '-vv'フラグを付けて新しい質問をしてください。 – JBaruch

0

これも私のために働いています。 @JBaruchで指定されたコマンドを書くことも、json AQLファイルを実行することもできます。

$カール-uのuname -X POST http://host:8081/artifactory/api/search/aql -H "コンテンツタイプ:アプリケーション/ JSON" -d @

関連する問題