我们用完了 CI 服务器上的磁盘空间(!)并决定清理一些旧的集成。但是,我找不到在报告导航器中多选集成的方法。这可能吗?
(我想可能有一种通过非官方 API的方法,但我宁愿不这样做)
据我所知,只能一一删除集成。您可以通过首先获取GET /api/bots
机器人列表_id
(BOT_ID
GET /api/bots/BOT_ID/integrations
然后,您可以迭代并调用每个集成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/
我也遇到了磁盘空间不足的问题。我最初认为应该归咎于集成并手动删除了其中的大部分,但回收的磁盘空间对消耗的内容并不重要。有人会认为删除所有集成应该将磁盘空间回收到一个点,就好像从未运行过集成一样。但是在删除集成后并没有发生这种情况。然后,在根据阅读 Honza 的博客(来自上述评论的czechboy )的想法查看 Xcode Server 内部时,我发现磁盘空间被
/Library/Developer/XcodeServer/Integration/Caches是罪魁祸首。
删除它我能够回收整个磁盘空间,就好像没有在 Xcode 服务器上运行过任何集成一样。当您运行机器人并添加新机器人时,会重新创建其中的文件夹。但是,删除机器人似乎不会删除相应的缓存文件夹。在我们的例子中,我们为任何需要构建的分支创建机器人。随着时间的推移,该文件夹确实最终占据了最大的磁盘空间。
我们目前的解决方案
到目前为止,两者都是手动运行的。稍后也许我们会按照每两周一次的计划运行它。
Honza在拆解 Xcode Server 方面做得很好。在我进行设置时,他的博客是最有用的读物。确保完整阅读他的博客。它是你期望苹果开发团队在 Xcode Server 上工作的那种技术信息,但是苹果缺乏文档是令人震惊的。