如何检索关于工件的信息?

安德烈Granovsky
2023-01-22十一10

除了上传和下载工件的能力外,Artifactory还存储了每个工件的大量信息和元数据。这些信息可以用于不同的目的,下面您将找到可用信息的示例以及如何检索这些信息。

大多数信息,如属性、统计信息、最后修改日期或其他信息,都可以使用REST api.除了REST api,GraphQL而且AQL还可以提供有价值的信息。

对于下面的例子,我们将使用以下示例变量:
存储库- "generic-local"
文件名- "test.zip"
用户名-“admin”

请注意,下面的例子是简化的,关于每个REST API的更多信息可以在下面的链接中找到。

文件信息—检索项目信息

使用示例:
$JFROG_URL/artifactory/api/storage/generic-local/test.zip
样例输出:

"repo": "generic-local",
"path": "/test.zip"
"created": "2023-01-03T12:44:40.588Z",
createdBy:“admin@test.com”,
"lastModified": "2023-01-03T12:44:38.061Z",
modifiedBy: "admin@test.com",
"lastUpdated": "2023-01-03T12:44:40.589Z",
$JFROG_URL/artifactory/generic-local/test.zip
"mimeType": "application/zip",
"size": "176",
"checksum ": {
"sha1": "5dfaf15eaa22fe0bfe8b7a2f89da3dee08e4663e",
"md5": "4b819b4144645153558212e8cf03b01e",
"sha256": "6d99ff215c0cc721fd054c1df63e27ce735d04c75af71c9e619e9207c12133f3"
},
" originalchecksum ": {
"sha1": "5dfaf15eaa22fe0bfe8b7a2f89da3dee08e4663e",
"md5": "4b819b4144645153558212e8cf03b01e",
"sha256": "6d99ff215c0cc721fd054c1df63e27ce735d04c75af71c9e619e9207c12133f3"
},
"uri": "$JFROG_URL/artifactory/api/storage/generic-local/test.zip"

文件夹信息—检索文件夹信息

使用示例:curl -u admin $JFROG_URL/artifactory/api/storage/generic-local
样例输出:

"repo": "generic-local",
"path": "/",
"created": "2021-04-29T12:37:59.404Z",
"lastModified": "2021-04-29T12:37:59.404Z",
"lastUpdated": "2021-04-29T12:37:59.404Z",
"children": [{
"uri": "/example-test-folder"
folder: true
}, {
uri: "/test.rar",
folder: false
}, {
"uri": "/test.zip"
folder: false
}),
"uri": "$JFROG_URL/artifactory/api/storage/generic-local"

最后修改-检索给定路径上的最后一个修改项

使用示例:
$JFROG_URL/artifactory/api/storage/generic-local/test.zip\?lastModified”
样例输出:

$JFROG_URL/artifactory/api/storage/generic-local/test.zip
"lastModified": "2023-01-03T13:15:01.584+0000"

文件数据—检索项目统计信息

使用示例:
$JFROG_URL/artifactory/api/storage/generic-local/test.zip?统计数据”
样例输出:

$JFROG_URL/artifactory/generic-local/test.zip
"downloadCount": 3,
" lastdownload ": 1672752674260,
" lastdownloaddby ": "admin@test.com",
"remoteDownloadCount": 0,
" remotelastdownloads ": 0

项属性—检索项目属性

使用示例:
$JFROG_URL/artifactory/api/storage/generic-local/test.zip?属性”
样例输出:

"properties": {
"example": ["1"],
"test": ["2"]
},
"uri": "$JFROG_URL/artifactory/api/storage/generic-local/test.zip"

也可以在Artifactory中使用检索包的元数据GraphQL
注意,要使用GraphQL,您将需要一个作用域的令牌用于查询元数据服务器。

下面的示例查询将:

  1. 只搜索NPM和Docker包
  2. 过滤名称中包含“table”的包
  3. 返回这些字段:id,名称,描述,创建,packageType, versionsCount
  4. 显示前5个结果
  5. 按包名订购

curl -H "Authorization: holder " -XPOST $JFROG_URL/metadata/api/v1/query -d '{"query": "{packages(filter: {name: \"*table*\", packageTypeIn: [NPM, DOCKER]},first: 5, orderBy: {field: name, direction: DESC}) {edges {node {id name description created modified packageType versionsCount}}}}"}' | jq .
样例输出:

"数据":{
"包":{
“边缘”:(

“节点”:{
“id”:“npm: / /文本表”,
“名称”:“文本表”,
"description": "对齐的无边界文本表",
“创建”:“2022 - 08 - 01 - t10:59:00.314z”,
“修改”:“2018 - 05 - 27 t19:16:52z”,
:“packageType npm”,
“versionsCount”:1

},

“节点”:{
“id”:“npm: / / json-stable-stringify-without-jsonify”,
“名称”:“json-stable-stringify-without-jsonify”,
"description": "带有自定义排序的确定性json.stringify(),从字符串化结果中获得确定性哈希,不依赖于公共域",
“创建”:“2022 - 08 - 01 - t10:58:58.118z”,
“修改”:“2018 - 05 - 27 t05:40:58z”,
:“packageType npm”,
“versionsCount”:1

},

“节点”:{
“id”:“npm: / /不变的”,
“名称”:“不变”,
"description": "不可变数据集合",
“创建”:“2022 - 08 - 01 - t10:58:56.614z”,
“修改”:“2022 - 05 - 23 t19:04:50z”,
:“packageType npm”,
“versionsCount”:1

},

“节点”:{
“id”:“npm: / / fast-json-stable-stringify”,
“名称”:“fast-json-stable-stringify”,
"description": "确定性的' json.stringify() ' -子堆栈的json-stable-strigify的更快版本没有jsonify",
“创建”:“2022 - 08 - 01 - t10:59:00.228z”,
“修改”:“2019 - 12 - 14 t16:18:01z”,
:“packageType npm”,
“versionsCount”:1}}]}}}

除了以上,我们还可以用Artifactory查询语言检索与存储在Artifactory中的工件和构建相关的数据。

下面的例子列出了“generic-local”存储库中的所有项,并将显示查询的include部分中提供的每个工件的字段:
curl -X POST "$JFROG_URL/artifactory/api/search/aql" -u admin -H "Content-Type: text/plain" -d 'item .find({"repo":"generic-local"}).include("repo","name","path","created","modified","sha256","size")'
样例输出:

“结果”:[{
"repo": "generic-local",
"path": ".",
"name": "test.rar",
“size”:18,
"created": "2022-09-15T13:11:45.880Z",
"modified": "2022-09-15T13:11:45.791Z",
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
}, {
"repo": "generic-local",
"path": ".",
"name": "test.zip",
“size”:176,
"created": "2023-01-03T12:44:40.588Z",
"modified": "2023-01-03T13:15:01.584Z",
"sha256": "6d99ff215c0cc721fd054c1df63e27ce735d04c75af71c9e619e9207c12133f3"
}),
"range": {
"start_pos": 0,
"end_pos": 2,
"total": 2


在Artifactory Query Language中可以找到其他示例和可用的过滤器文档