ARTIFACTORY:“最大唯一快照”参数在ARTIFACTORY中是如何工作的?
使用快照是一种标准的开发实践,但是,根据保存的快照的数量,这可能会占用大量的磁盘空间。
若要指定可以存储的快照的最大数量,请在Administration模块中选择Repositories并单击要编辑其设置的存储库。
在“基本设置”中,选中“处理快照”,然后设置“最大惟一快照”字段。这个值是零默认情况下,保存所有快照。
最大惟一快照支持的包类型
Artifactory支持以下包类型的“Max Unique Snapshots”标签:
- Maven
- NuGet
- Gradle
- 艾薇
- Docker(“最大唯一标签”)
- SBT
这个功能是如何工作的?
为了演示这个特性是如何工作的,让我们以一个Maven快照存储库为例,其中“Max Unique snapshots”设置为2。在这个存储库中,我们已经部署了2个Maven快照,这导致了Maven快照存储库下的以下结构:
如上所示,例如,部署快照时,除了版本号之外,文件名还将追加部署的时间戳。
此时,我们已经达到了“最大惟一快照”的限制,因此对于任何部署的新快照,都应该触发清理。因此,我们已经重新部署了根据之前命名部署的工件的另一个快照,在它的名称上应用“-3”来表示这是工件的第三个版本:
这就是“最大唯一快照”出现的地方,因为作为清理过程的一部分,工件的第一个版本被删除了,结果如下:
最后,我们可以看到存储库只包含快照的第二个和第三个版本,因为由于存储库的“最大惟一快照”策略集,第一个版本被删除了。
也可以通过
$JFROG_HOME/artifactory/var/log/artifactory-service.log如下所示:2022-08-15T06:03:33.495Z [jfrt] [INFO] [69f57c5982eefe5d] [egrationCleanupServiceImpl:214] [art-exec-42829] -删除旧的唯一快照'org/eclipse/jetty/jetty-ajp/3.1-SNAPSHOT/jetty-ajp-3.1-20220815.055110-1.jar'。
2022-08-15T06:03:33.504Z [jfrt] [INFO] [69f57c5982eefe5d] [egrationCleanupServiceImpl:214] [art-exec-42829] -删除旧的唯一快照'org/eclipse/jetty/jetty-ajp/3.1-SNAPSHOT/jetty-ajp-3.1-20220815.055110-1.pom'
注意:
为了避免并发问题,Artifactory要求您存储至少2个惟一的快照。
冗余快照不会立即删除:
每次部署快照时,Artifactory将检查存储库的最大惟一快照值,如果超过该值,将标记任何多余的旧快照进行删除。然后,每隔5分钟,Artifactory运行一个后台进程,删除那些已标记的最旧的快照。例如,如果您将最大惟一快照设置为5,并将第6个和第7个快照部署到存储库,那么下次后台进程运行时,它将删除两个最旧的快照。
