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

问题描述

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

2020.11.4

即使经过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分钟后,我也无法下载文件。变得“无法找到包裹”。

但是当我通过UI上传文件时,一分钟后它变得可用。 另外,当我单击“重新编制索引”后,一分钟后它就会可用。

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

解决方法

要使apt-get可以下载Debian软件包,必须更新存储库索引。
将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