RPM索引在Artifactory中是如何工作
RPM
RPM是用于保存和管理RPM软件包的仓库。我们在RHEL和Centos系统上常用的Yum安装就是安装的RPM软件包,而Yum的源就是一个RPM软件包的仓库。JFrog Artifactory是成熟的RPM和YUM存储库管理器。JFrog的官方Wiki页面提供有关Artifactory RPM存储库的详细信息。
Artifactory索引RPM包的过程
Artifactory 5.5.0及之后版本,针对YUM元数据计算处理进行了重大的改进,加入了并发和增量计算的能力。所以新的索引过程:
1、性能上优于之前自动触发的异步计算
2、同时不需要在单独开发触发元数据计算的插件
3、可以监控并且准确地知道新的元数据计算的状态
如下图:创建RPM仓库时选择“Auto Calculate RPM Metadata”,Artifactory将会拦截Copy或Move的操作,并且自动触发计算步骤。保证在及时提供给用户最新的元数据用来获取软件包的版本
![图片1.png](https://static.studygolang.com/200703/32e12f7954c0825032f018e8ab09e089.png)
元数据的两种方式
异步:
正常情况下,如果启动了以上的选项,那么当你使用REAT API或者UI部署包的时候,异步计算将会拦截文件操作,并且将索引添加操作加入到Artifactory内部的队列中进行计算。
同步:
只有关闭“Auto Calculate RPM Metadata”时才可以使用,此时您可以手动触发元数据计算。
例:
有一个CI任务可以将很多版本上传到一个大型仓库里,可以在流水线中增加一个额外的构建步骤。以下为仓库名为“rpm-release-local”,通过Rest API请求手动触发元数据计算
curl -uadmin:password -XPOST "localhost:8081/artifactory/api/yum/rpm-release-local?async=0" -i -Lvv
* Connected to localhost (::1) port 8081 (#0)
* Server auth using Basic with user 'admin'
> POST /artifactory/api/yum/rpm-release-local?async=0 HTTP/1.1
> Host: localhost:8081
> Authorization: Basic YWRtaW46cGFzc3dvcmQ=
> User-Agent: curl/7.54.0
> Accept: */*
< HTTP/1.1 200 OK
< Server: Artifactory/6.3.2
< X-Artifactory-Id: a9116dfeb1f6dac4:449dde33:1658a295e45:-8000
< Content-Type: text/plain
< Transfer-Encoding: chunked
< Date: Sun, 02 Sep 2018 12:19:56 GMT
Artifactory RPM系统属性整选项(5.5.0及以上版本)
artifactory.rpm.metadata.calculation.workers(默认值为8)
–本地RPM元数据计算线程数。
artifactory.rpm.metadata.history.cycles.keep(默认值3)
–保留元数据记录,包括已经计算完成的计算记录
yum.virtual.metadata.calculation.workers(默认5)
-虚拟库计算的线程数
日志
RPM日志记录org.artifactory.addon.yum.YumAddonImpl:
INFO级别:Starting to calculate Rpm metadata for
您可以在Artifactory中的以下软件包上启用调试/跟踪级别日志记录(修改$ ARTIFACTORY_HOME / etc / logback.xml)以跟踪/调试您的计算:
自动计算(异步):
DEBUG级别:{path}的异步Rpm计算
触发(同步):
DEBUG级别:{path}的同步Rpm计算
虚拟RPM存储库计算:
为org.artifactory.addon.yum.virtual.index启用每个日志级别 :
DBUG级别:为{path}启动虚拟yum元数据计算
整个包逻辑过程的跟踪级别:
为org.jfrog.metadata.indexer.RpmRepoIndexer启用每个日志级别 :
TRACE级别:准备索引RPM存储库元数据
DEBUG级别:完成对RPM存储库元数据的索引编制
有疑问加站长微信联系(非本文作者)