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

时间:2015-12-08 18:10:10

标签: xcode7 xcode-server

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

xcode bot integrations

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

2 个答案:

答案 0 :(得分:5)

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

然后,您可以迭代并调用每个集成GET /api/bots/BOT_ID/integrations

您调用这些API的方式如下: DELETE /api/integrations/INTEGRATION_ID/REV_ID,所以要让所有机器人都运行curl -k -u USER:PASS https://localhost:20343/api/...

在此文件中查看您自己的更多详细信息:/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/

中撰写了关于内部的内容

答案 1 :(得分:1)

我的磁盘空间也用完了问题。我最初认为集成是责备并且手动删除了大部分集成,但回收的磁盘空间并不重要。 有人会认为删除所有集成应该将磁盘空间回收到某一点,就好像没有运行任何集成一样。但删除集成后没有发生这种情况。 然后根据从Honza的博客( czechboy 上面的评论)中获得的想法查看Xcode Server内部结构,我发现了占用的磁盘空间

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

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

我们当前的解决方案

  • python脚本调用Xcode Server api删除所有集成。集成产品都备份,因此保持个人集成的价值不大。
  • bash脚本删除缓存文件夹。

截至目前,两者都是手动运行的。稍后我们可能会按照每两周一次的时间表运行它。

Honza 在拆分Xcode Server方面做得很好。在我设置时,他的博客是最有用的阅读。请务必完整阅读他的博客。它是苹果开发团队在Xcode Server上所期望的那种技术信息,但苹果公司缺乏文档的情况正在下滑。