【问题标题】:Nexus Repository 3 (NXRM3): Delete snapshot task not removing timestamped artifactsNexus Repository 3 (NXRM3):删除快照任务不删除带时间戳的工件
【发布时间】:2019-02-18 05:05:43
【问题描述】:

我最近设置了 NXRM3.13.0-01 并一直在构建 maven-snapshots 存储库的工件快照。与我的本地 Maven 构建的集成似乎没问题。它从 Nexus 读取,在构建时部署最新的带时间戳的工件,并在被告知时获取最新的带时间戳的快照。我有一个 Maven - 删除快照 任务配置为使用以下配置删除快照:

存储库:所有存储库
快照保留(天):30
最小快照计数:3
如果发布则删除:是
发布后的宽限期(天):7

当此任务运行时,它不会从快照存储库中删除任何内容。我还按照文档运行了 Compact Blob Store 任务,以防需要回收磁盘空间但无济于事。从日志中,我可以看到 1.0 和 5.8.01 这两个版本被确定为候选版本。但是,不会清除任何工件。在日志中,我可以看到以下内容。它没有找到可以移除的合格工件:

2018-09-13 10:12:49,423+0000 INFO  [qtp1041814774-1123]  admin org.sonatype.nexus.quartz.internal.task.QuartzTaskInfo - Task 'Mark Snapshots for Deletion' [repository.maven.remove-snapshots] runNow
2018-09-13 10:12:49,424+0000 INFO  [qtp1041814774-1123]  admin org.sonatype.nexus.quartz.internal.task.QuartzTaskInfo - Task 'Mark Snapshots for Deletion' [repository.maven.remove-snapshots] state change WAITING -> RUNNING
2018-09-13 10:12:49,459+0000 INFO  [quartz-5-thread-20]  *SYSTEM org.sonatype.nexus.repository.maven.tasks.RemoveSnapshotsTask - Task log: /nexus-data/log/tasks/repository.maven.remove-snapshots-20180913101249447.log
2018-09-13 10:12:49,460+0000 INFO  [quartz-5-thread-20]  *SYSTEM org.sonatype.nexus.repository.maven.tasks.RemoveSnapshotsTask - Executing removal of snapshots on repository 'maven-snapshots'
2018-09-13 10:12:49,496+0000 INFO  [quartz-5-thread-20]  *SYSTEM org.sonatype.nexus.repository.maven.internal.RemoveSnapshotsFacetImpl - Beginning snapshot removal on repository 'maven-snapshots' with configuration: org.sonatype.nexus.repository.maven.tasks.RemoveSnapshotsConfig(minimumRetained:3, snapshotRetentionDays:30, removeIfReleased:true, gracePeriod:7)
2018-09-13 10:12:49,497+0000 INFO  [quartz-5-thread-20]  *SYSTEM org.sonatype.nexus.repository.maven.internal.RemoveSnapshotsFacetImpl - Begin processing snapshots in repository 'maven-snapshots'
2018-09-13 10:12:49,504+0000 INFO  [quartz-5-thread-20]  *SYSTEM org.sonatype.nexus.repository.maven.internal.RemoveSnapshotsFacetImpl - Found 2 snapshot GAVs to analyze
2018-09-13 10:12:49,516+0000 INFO  [quartz-5-thread-20]  *SYSTEM org.sonatype.nexus.repository.maven.internal.RemoveSnapshotsFacetImpl - ---- Searching for GAVS with snapshots that qualify for deletion on repository 'maven-snapshots' ----
2018-09-13 10:12:49,517+0000 INFO  [quartz-5-thread-20]  *SYSTEM org.sonatype.nexus.repository.maven.internal.RemoveSnapshotsFacetImpl - Elapsed time: 12.14 ms, deleted 0 components from 0 distinct GAVs
2018-09-13 10:12:49,518+0000 INFO  [quartz-5-thread-20]  *SYSTEM org.sonatype.nexus.repository.maven.internal.RemoveSnapshotsFacetImpl - Finished processing snapshots with more than 3 versions created before 2018-08-14T10:12:49.517Z
2018-09-13 10:12:49,518+0000 INFO  [quartz-5-thread-20]  *SYSTEM org.sonatype.nexus.repository.maven.internal.RemoveSnapshotsFacetImpl - Updating metadata on repository 'maven-snapshots'
2018-09-13 10:12:49,519+0000 INFO  [quartz-5-thread-20]  *SYSTEM org.sonatype.nexus.repository.maven.internal.RemoveSnapshotsFacetImpl - Completed snapshot removal on repository 'maven-snapshots'
2018-09-13 10:12:49,520+0000 INFO  [quartz-5-thread-20]  *SYSTEM org.sonatype.nexus.quartz.internal.task.QuartzTaskInfo - Task 'Mark Snapshots for Deletion' [repository.maven.remove-snapshots] state change RUNNING -> WAITING (OK)

快照存储库如下。我的假设是 v5.8.01-SNAPSHOT 的前两个将被删除,而后两个将根据任务配置保留:

我的问题是:

  1. 我错过了什么吗?
  2. 我可以做些什么来获得所需的行为?

【问题讨论】:

  • 您已配置为保留 Minimum snapshot count: 3 ...我建议将其更改为 0 并且您的保留天数听起来很长..通常我将 Nexus 配置为最多 7 天...和没有宽限期...因为 7 天后 SNAPSHOT 已被其他几个 SNAPSHOT 替换...所以不需要那些旧的...除此之外,您是否有充分的理由使用像 5.8.01 这样的版本?为什么不简单地使用5.8.1?顺便说一句:如果您看到时间戳是从 11.9.2018 开始的,这意味着只有两天,所以我不希望被删除?
  • 不幸的是,版本控制就是这样。也就是说,我是个傻瓜。保留日期是问题所在。盯着我的脸。我将它调整为 0 并解决了它。盯着它太久了。谢谢!
  • 没问题。不时发生...欢迎来到俱乐部 ;-)

标签: maven nexus snapshot nexus3


【解决方案1】:

如果将快照版本设置为保留,即使策略配置正确,也不会删除带时间戳的快照。 意识到我必须编写自己的代码来删除 Nexus 3 中的时间戳快照,您可以在 https://gist.github.com/dwamara/506a51483549eb1c8f90eb88c82e17a6 下找到它。 IT 运行良好,我能够将快照的大小从 1.4 TB 减少到 200GB。 完成后不要忘记压缩 blobstore。

【讨论】:

  • 虽然与您的答案没有直接关系,但我想补充一点,为了配置任何清理策略,(1) 必须在 Cleanup Policies 中设置该策略,(2) 将其添加到它应该处理的存储库(在Repositories 中)并且 - 一旦完成 - (3) 手动执行清理任务(在 Tasks 中)和 (4) 然后运行名为Compact ... blob store 的任务(您在回答中提到过)。
【解决方案2】:

工件在保留阈值内。将保留设置为零允许按预期删除它们。谢谢@khmarbaise

【讨论】:

    【解决方案3】:

    感谢 @khmarbaise,您的建议也适用于 Nexus2.x,但有些事情是任何人都应该注意的:

    • 设置Minimum snapshot count: 0Snapshot retention (days): 7表示如果最近7天没有推送快照,则该工件文件夹中将没有快照。
    • 如果选中Remove if released,当发布版本发布时,工件文件夹将从快照存储库中删除

    • 我的 Nexus2.x 示例

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-01-17
      • 2020-10-24
      • 1970-01-01
      • 2014-09-22
      • 2015-10-31
      • 1970-01-01
      • 1970-01-01
      • 2022-09-23
      相关资源
      最近更新 更多