1

我正在尝试从 manifest.json 文件中获取 SHA_256 值,但无法使用 aql。以下是我正在使用的 cmd:

ubuntu@test:~$ curl -sS -u sumkumar:$pw -XPOST -k -H "Content-type: text/plain" https:///artifactory/api/search/aql -d 'items.find({ "repo":"xyz"},{"path":"a/b/c"}).include("*")'

{
"results" : [ {
  "repo" : "xyz",
  "path" : "a/b/c",
  "name" : "manifest.json",
  "type" : "file",
  "size" : 1579,
  "created" : "2018-03-13T11:58:33.771Z",
  "created_by" : "uex-sp-cd",
  "modified" : "2018-03-15T14:17:38.299Z",
  "modified_by" : "uex-sp-cd",
  "updated" : "2018-03-15T14:17:38.299Z",
  "depth" : 4,
  "actual_md5" : "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
  "actual_sha1" : "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
  "original_md5" : "NO_ORIG",
  "original_sha1" : "NO_ORIG",
  "virtual_repos" : [ ]
},{

但是,如果您从 UI 中查看原始 manifest.json 文件。它包含 SHA256 值。 在此处输入图像描述

4

1 回答 1

1

根据AQL 文档item实体具有该sha256字段。但它提到了以下注释:

Artifactory 5.5 版支持 SHA-256

您只能对已部署到 Artifactory 版本 5.5 或更高版本的 Artifact 执行 AQL 搜索,或者如果您在将 Artifactory 升级到版本 5.5 或更高版本后按照SHA-256 支持中所述迁移了数据库。

请验证您的 Artifactory 是否符合上述要求。

此外,假设这是一个 Docker manifest.json,它特别应该在一个名为的属性中包含 SHA256 docker.manifest.digest(也可能是一个名为 的属性sha256)。要获取属性值,您可以添加"property.*"include(..)查询部分。

例如:

items.find({"repo":"xyz","path":"a/b/c","name":"manifest.json"})
     .include("repo","path","name","sha256","property.*")

将返回如下内容:

{
"results" : [ {
  "repo" : "xyz",
  "path" : "a/b/c",
  "name" : "manifest.json",
  "sha256" : "34cb6f8e1e1aca...",
  "properties" : [ {
    "key" : "docker.manifest.digest",
    "value" : "sha256:34cb6f8e1e1aca..."
  },{
    "key" : "sha256",
    "value" : "34cb6f8e1e1aca..."
  }
  ...
于 2022-01-27T09:42:21.427 回答