我正在使用Jenkins中的RTC插件来运行我们的CI构建,并且作为构建的一部分,它创建了一个存储在构建RTC工作区中的快照。据我所知,没有配置选项来禁用快照创建,因此我们最终得到了数百个我们从不需要/使用的快照。
我希望能够以自动方式删除这些快照,以便我可以删除旧工作区,但我无法在CLI中找到相应的选项 - 是否有人知道这可能如何完成?
谢谢!
答案 0 :(得分:0)
应仅在专用于构建的RTC repo工作区(与RTC中的构建定义关联的repo工作区)中创建这些快照。
无法投放快照。它是流或工作空间的不可变配置。它代表了构建的内容。
您可以删除快照,它将位于构建用户的构建工作区中。
更简单,您可以删除/重新创建该回购工作区。
但不建议只删除一些快照:
快照表示构建时的SCM工作区 如果接受了更改,则无论是否通过,它们都将包含在此构建中,并且构建使用快照来报告何时将更改集包含在构建中。
因此,删除快照是不可取的,因为它会使构建过程混淆,以确定何时实际将更改集引入构建。
但是我需要定期清理不再需要的数百个构建工作区,如果有快照,我就不能这样做
您可以列出这些快照(右键单击repo工作区,“显示快照”)并查看该列表中的多个快照选择是否允许您(通过所述多个选择的上下文菜单)删除它们。 / p>
或者您也可以通过相同的多重选择change their ownership,至少将它们移动到一个共同的回购工作区(将它们转储到其中,等待更永久的解决方案)
但是如果你有数百个repos工作区:
首先,这很奇怪:你的构建定义应该只引用一个,而Jenkins不应该只构建一个,而只是从RTC接收来源(除非你没有使用RTC4)
第二,您可以列出工作区,并为每个工作区列出他们的快照,以便删除这些快照(使用RTC downloads中提供的Java API)。
请参阅this thread
要在删除工作区之前删除快照,请调用以下命令:
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