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