我正在使用 Jenkins 中的 RTC 插件来运行我们的 CI 构建,并且作为构建的一部分,它会创建一个快照,该快照存储在构建 RTC 工作区中。据我所知,没有禁用快照创建的配置选项,因此我们最终得到了数百个我们永远不需要/使用的快照。
我想要一种自动删除这些快照的方法,以便我可以删除旧的工作区,但我在 CLI 中找不到该选项 - 有谁知道如何做到这一点?
谢谢!
我正在使用 Jenkins 中的 RTC 插件来运行我们的 CI 构建,并且作为构建的一部分,它会创建一个快照,该快照存储在构建 RTC 工作区中。据我所知,没有禁用快照创建的配置选项,因此我们最终得到了数百个我们永远不需要/使用的快照。
我想要一种自动删除这些快照的方法,以便我可以删除旧的工作区,但我在 CLI 中找不到该选项 - 有谁知道如何做到这一点?
谢谢!
这些快照应仅在专用于构建的 RTC 存储库工作区(您与 RTC 中的构建定义关联的存储库工作区)中创建。
无法交付快照。它是流或工作区的不可变配置。它代表了您构建的内容。
您可以删除快照,它将位于构建用户的构建工作区中。
更简单的是,您可以删除/重新创建该 repo 工作区。
但不建议只删除几个快照:
快照代表构建时的 SCM 工作区。
如果更改被接受,它们将包含在此构建中,无论它是否通过,并且构建使用快照来报告更改集何时包含到构建中。所以删除快照是不可取的,因为它会混淆构建过程来确定何时将变更集实际引入构建。
但是,我需要在不再需要它们后定期清理数百个构建工作区,如果其中有快照,我将无法这样做
您可以列出这些快照(右键单击存储库工作区,“显示快照”)并查看该列表中的多个快照选择是否允许您(通过所述多个选择的上下文菜单)删除它们。
或者您也可以通过相同的多项选择,更改它们的所有权,至少将它们移动到一个公共的 repo 工作区(将它们转储到其中,等待更永久的解决方案)
但是,如果您有数百个 repos 工作区:
首先,这很奇怪:您的构建定义应该只引用一个,而 Jenkins 不应该构建一个,而只是从 RTC 接收源代码(除非您不使用 RTC4)
其次,您可以列出工作区,并为每个工作区列出其快照以删除这些快照(使用RTC 下载中提供的 Java API )。
看到这个线程
要在删除工作区之前删除快照,请调用以下命令:
IWorkspaceConnection.removeBaselineSet(IBaselineSetHandle baselineSet, IProgressMonitor monitor)
如果您拥有拥有快照的工作区,则可以使用(具有进一步限定查询范围的方法)
IWorkspaceHandle
找到拥有该快照的所有快照。IBaselineSetSearchCriteria
IBaselineSetSearchCriteria
前任:
IWorkspaceHandle wsHandle = null // GET ME SOMEHOW
IWorkspaceManager workspaceManager = SCMPlatform.getWorkspaceManager(repo);
IBaselineSetSearchCriteria criteria = IBaselineSetSearchCriteria.FACTORY.newInstance();
criteria.setOwnerWorkspaceOptional(wsHandle);
List snapshotHandles = workspaceManager.findBaselineSets(criteria, MAX_TO_SHOW, null);
// snapshotHandles contains a list of IBaselineSetHandle, so you can fetch them