如何在 Xcode 7 中一次删除多个集成?

Posted

技术标签:

【中文标题】如何在 Xcode 7 中一次删除多个集成?【英文标题】:How do I delete multiple integrations at once in Xcode 7? 【发布时间】:2015-12-08 18:10:10 【问题描述】:

我们用完了 CI 服务器上的磁盘空间 (!) 并决定清理一些较旧的集成。但是,我找不到在报告导航器中多选集成的方法。这可能吗?

(我想可能有办法通过unofficial API,但我宁愿不这样做)

【问题讨论】:

【参考方案1】:

据我所知,只能一一删除集成。您可以通过首先获取机器人列表 (GET /api/bots),找到您的机器人的 _id(我们称之为 BOT_ID)然后获取其集成列表 (GET /api/bots/BOT_ID/integrations) 并收集它们的 ID 和转速。

然后,您可以迭代并调用每个集成 DELETE /api/integrations/INTEGRATION_ID/REV_ID

您调用这些 API 的方式是,例如curl -k -u USER:PASS https://localhost:20343/api/...,所以要让所有机器人运行 curl -k -u USER:PASS https://localhost:20343/api/bots

在此文件中查看更多详细信息:/Applications/Xcode.app/Contents/Developer/usr/share/xcs/xcsd/routes/routes_integration.js

如果您想了解更多关于 XCS 内部的信息,我构建了一个 Swift SDK:https://github.com/czechboy0/XcodeServerSDK 并在 http://honzadvorsky.com/articles/2015-05-04-under-the-hood-of-xcode-server/ 中写了有关内部的文章

【讨论】:

我有一个gist 有一个可行的解决方案。如果这是您需要的,它将删除所有集成。【参考方案2】:

我也遇到了磁盘空间不足的问题。我最初认为应该归咎于集成并手动删除了其中的大部分,但回收的磁盘空间对消耗的内容并不重要。 有人会认为删除所有集成应该将磁盘空间回收到一个点,就好像从未运行过集成一样。但是在删除集成后并没有发生这种情况。 然后,在根据阅读 Honza 的博客(czechboy 来自上述评论)的想法查看 Xcode Server 内部时,我发现了

占用的磁盘空间

/Library/Developer/XcodeServer/Integration/Caches 是罪魁祸首。

删除它后,我能够回收整个磁盘空间,就好像没有在 Xcode 服务器上运行过任何集成一样。 当您运行机器人并添加新机器人时,会重新创建其中的文件夹。但是,删除机器人似乎不会删除相应的缓存文件夹。 在我们的例子中,我们为任何需要构建的分支创建机器人。随着时间的推移,该文件夹确实最终占据了最大的磁盘空间。

我们目前的解决方案

python 脚本调用 Xcode Server api 删除所有集成。集成产品都已备份,因此保留单个集成没有太大价值。 bash 脚本删除缓存文件夹。

到目前为止,两者都是手动运行的。以后也许我们会按照每两周一次的计划运行它。

Honza 在拆解 Xcode 服务器方面做得非常出色。在我进行设置时,他的博客是最有用的读物​​。确保完整阅读他的博客。它是您期望 Apple 的开发团队提供 Xcode Server 的技术信息,但 Apple 缺乏文档令人震惊。

【讨论】:

以上是关于如何在 Xcode 7 中一次删除多个集成?的主要内容,如果未能解决你的问题,请参考以下文章

如何在Xcode的Interface Builder中一次编辑多个约束

如何在 AWK 中一次删除多个列和字段分隔符?

Xcode:如何在应用程序中一次更改所有字体?

如何在 Eclipse 中一次显示 100 多个任务 //TODO?

如何在 Firestore 中一次创建/更新多个文档

如何在 C# 中一次播放多个声音