如何设置 Xcode Bot 为远程存储库的所有分支“提交时”运行?
Posted
技术标签:
【中文标题】如何设置 Xcode Bot 为远程存储库的所有分支“提交时”运行?【英文标题】:How to set Xcode Bot to run "on commit" for all branches of remote repository? 【发布时间】:2015-02-26 23:15:13 【问题描述】:在 Xcode 6 中创建 Xcode Bot 时,它会链接到 Xcode 源代码控制中的当前活动分支。创建机器人后似乎没有支持更改分支的方法。
Xcode Service: Select Git Branch
我已将我的机器人设置为“提交时”运行。我发现当我提交到 那个分支 时,机器人会立即集成该项目。但是当我提交到不同的分支时,机器人不会采取任何行动。
理想情况下,我想要一个单个 Xcode Bot 来查看远程存储库的所有分支。当任何分支有新的提交时,应该运行机器人及其测试。
我不想为每个分支创建一个新的机器人。有解决办法吗?
错误报告:rdar://20154198
开发者论坛:https://devforums.apple.com/thread/263490
【问题讨论】:
【参考方案1】:还有由工具@jeremy-fox 的同一创建者开发的https://github.com/modcloth-labs/XBotBuilder。它将为每个拉取请求创建一个机器人,并为 PR 中的每个添加重新运行该机器人。
它似乎处于早期阶段并且没有文档,但代码似乎组织良好,因此不难让它工作或改变它的行为来做你想做的事。
【讨论】:
我们在构建过程中使用它。这太不可思议了,可以利用社区的一些额外的爱【参考方案2】:目前,我们使用名为 Buildasaur (https://github.com/czechboy0/Buildasaur) 的工具来改进我们的 CI 工作流程。它是用 swift 编写的,有助于为一个 github 存储库自动构建/运行/删除机器人,例如,每当创建 pullrequest 或将更新的提交推送到 pullrequest 时。实际上它在我们的 Xcode Server 6.3 上运行良好。不幸的是,它同时仅适用于一个存储库。 :-( 我们也希望 Apple 能尽快实现这些功能。
【讨论】:
我正在致力于多仓库支持 :) 投票:github.com/czechboy0/Buildasaur/issues/12 其实Buildasaur现在支持多仓库同步。【参考方案3】:Apple 来自开发者论坛的回复:
这不是 Xcode Server 支持的。您可能能够制作一个预集成触发器来切换工作副本中的分支并调用单独的 xcodebuild 调用,但 UI 中报告的结果仅适用于 Xcode Server 构建(XCS 在您的触发器执行后运行的构建) .
https://devforums.apple.com/thread/263490
rdar://20154198
【讨论】:
【参考方案4】:Xcode Bot 目前无法实现这一点(当前版本为 Xcode Server 4.0.3 和 Xcode 6.2)。 Bot 只会跟踪它创建的特定分支表单。
过去在 Xcode Server 3 和 Xcode 5 上使用 https://github.com/modcloth-labs/github-xcode-bot-builder 可以做到这一点,但该项目尚未更新为与最新版本的 Xcode Server 和 Xcode 一起使用。
我也非常希望 Apple 尽快推出此功能,如果能够让单个机器人监控新的 Pull Requests 的 repo 并在发现时针对该 PR 运行集成,那就太好了。不过目前看来,这是不可能的。
2015 年 3 月 19 日更新: 正如@Gus 在另一个答案中所报告的那样,有一个新的基于 Mac OS X 的项目可以帮助创建名为 XBotBuilder 的特性分支/PR 的临时机器人 - https://github.com/modcloth-labs/XBotBuilder。值得注意的是,目前,该项目仅适用于一个 github repo。因此,如果您有多个要监控 PR 的 repo,目前这仍然是不可能的,除非您有多台机器,每台机器都运行不同的 XBotBuilder 实例并针对不同的 repo。
【讨论】:
谢谢。如果您愿意,可以欺骗rdar://20154198
!以上是关于如何设置 Xcode Bot 为远程存储库的所有分支“提交时”运行?的主要内容,如果未能解决你的问题,请参考以下文章
Xcode Server bot 为所有模拟器构建 ipa 文件
Xcode Bot:如何在后触发脚本上获取 .ipa 路径?