在Artifactory中上传后无法立即下载debian文件

In Artifactory Unable to download debian file immediately after uploading

我已经使用以下命令上传了一个 debian 文件

curl -H -u$ARTIFACTORY_USER:$ARTIFACTORY_TOKEN -XPUT "http://artifactory-url/artifactory/debian/pool/$package;deb.distribution=trusty;deb.component=main;deb.architecture=all" -T $package

即使在 10 分钟后,我也无法通过 apt-get update && apt-get download $package 下载文件。获取 'unable to locate package'.

但是当我通过 UI 上传文件时,它会在一分钟后可用。 此外,当我单击重建索引时,它会在一分钟后可用。

我正在我们的 CI 管道中执行此操作,在上传到工件后,我需要工件在一分钟内可用以用于下一步。在这种情况下我该怎么办?为什么通过 curl 上传不索引包?

要使 Debian 软件包可以通过 apt-get 下载,必须更新存储库索引。
当将 Debian 软件包部署到本地存储库时,索引该存储库相关子路径的事件将被添加到队列中。
该队列由专门的 Debian 元数据工作者不断处理(默认为 8 个,可配置)。
这意味着,一旦上传了 Debian 软件包,如果队列为空并且有工作人员可用,它将开始处理事件并为元数据编制索引。
索引通过为包括存储库 (debian-local/dists/xenial) 的整个分发路径创建锁来工作。一旦一个工作人员开始为存储库和分发的特定组合编制索引,另一个工作人员将不会在锁存在的情况下开始为同一路径的另一个事件编制索引。
10 分钟被认为是完成索引的较长时间(大约需要 1m)。这可能发生在一个加载的系统中,或者当许多 Debian 软件包部署到同一个分发路径时。

您可以在 artifactory.system.properties 中使用以下系统 属性 调整工作人员数量:

artifactory.debian.metadata.calculation.workers = 8

您还可以通过调用 Calculate Debian Repository Metadata REST API 方法强制同步计算整个存储库的元数据。
更多关于Artifactory Debian索引计算调优和调试的内容请参考以下knowledge base article.