使用 Jenkins 的 artifactory 插件从远程存储库下载不起作用

Downloading from remote repository using artifactory plugin for Jenkins does not work

我已经设置了一个远程通用存储库以指向 public CentOS 镜像站点并将其命名为 centos-remote。我可以在“本机浏览器”中浏览 Artifactory 中的存储库,并查看原始存储库中的所有文件。但是,当我尝试使用 Jenkins 插件下载文件或文件夹时,我没有收到任何文件。

这是我正在使用的下载规范(存储库中的文件夹图像包含几个大文件):

{"files": [{"pattern": "centos-remote/images/", "target": "images/"}]}

这是我在日志中的内容:

[2022-01-11T17:32:09.930Z] Searching for artifacts...
[2022-01-11T17:32:13.509Z] Found 0 artifacts.
[2022-01-11T17:32:13.509Z] Beginning to resolve Build Info published dependencies.
[2022-01-11T17:32:13.509Z] Finished resolving Build Info published dependencies.

插件本身似乎工作正常,因为从本地存储库下载没有问题。

我为 Jenkins 用于连接到 Artifactory 的用户添加了明确的只读权限,但这并没有改变任何东西。

更重要的是 - 在创建远程存储库时,创建了一个名为 centos-remote-cache 的新自动存储库。它看起来只包含以前下载过的文件。如果我使用“本机浏览器”并且我明确地将 centos-remote/images/ 文件夹中的文件下载到我的磁盘,则该文件将在 centos-remote-cache 存储库中可见。如果我更改我的下载规范以指向 centos-remote-cache/images/ 一个特定的、明确下载的文件将被正确下载,但仅此而已。

这不是我的解决方案,因为我希望插件不访问缓存而是访问远程存储库并强制下载整个文件夹。

我正在使用:

不幸的是,这是 Jenkins Artifactory 插件的一个限制。这是 -

的原因

在从 Artifactory 下载文件之前,Jenkins Artifactory 插件会执行根据提供的模式构建的 AQL 查询。 运行 Artifactory 当前不支持对远程非 Artifactory 存储库的 AQL 查询。

要从远程存储库下载文件,您可以执行带有直接 link 文件的 curl 命令:

curl -H "Authorization: Bearer xxxxx" -X GET <jfrog-instance-url>/artifactory/centos-remote/images/<file-name> -o <file-name>

来源:

  1. Uploading and Downloading Files
  2. Artifactory Query Language