无法使用 OSX Server 3.2.1 在 XCode 6.0.1 中创建 CI Bot

Posted

技术标签:

【中文标题】无法使用 OSX Server 3.2.1 在 XCode 6.0.1 中创建 CI Bot【英文标题】:Cannot create CI Bot in XCode 6.0.1 with OSX Server 3.2.1 【发布时间】:2014-10-08 13:46:43 【问题描述】:

我已升级到 OSX Server 3.2.1,并已在 XCode 帐户首选项中添加了我的存储库。 我们的 git 存储库托管在 TFS 服务器上(因为我的公司主要使用 Microsoft 系统)。 我通过 HTTPS 访问 TFS 服务器。

现在,我可以添加存储库,它会提示输入我提供的凭据,并且存储库已成功添加。 我通过 Source Code -> Project Name - Branch -> Configure Project 配置项目 之后我可以通过源代码菜单成功签出代码。

但是,当我通过 Product -> Create Bot 创建机器人时,我选择了架构和服务器并为机器人命名。 XCode 然后尝试验证设置并失败并显示以下内容:

我已经使用相同的凭据通过浏览器访问了存储库。似乎由于某种原因,XCode 不能很好地处理凭据。

知道如何解决这个问题吗?

【问题讨论】:

【参考方案1】:

我似乎找到了解决办法。 意外的 HTTP 状态代码:404 (-1) 与失败的身份验证没有直接关系。

身份验证成功,但现在存储库找不到“开发”分支的位置。 原因是我们的存储库位于本地 TFS 实现中,该实现在存储库名称中包含空格。

由于某种原因,Xcode 可以毫无问题地检查代码,但 Xcode 机器人无法处理包含空格的存储库名称/URL。

此外,TFS 不允许您更改存储库名称。因此,我们通过使用 Charles 对请求进行 URL 重写来解决这个特定问题。这似乎解决了问题。

谢谢!

【讨论】:

【参考方案2】:

希望我在上述答案中抓住了 Xcode 机器人无法处理带有空格的存储库名称的问题。

我不得不放弃一段时间。当 Xcode 6.1.1 发布时,我再次尝试,但仍然挣扎了好几天才能通过身份验证。使用日志记录手动运行 Xcode 时终于找到问题:

/Applications/Xcode.app/Contents/MacOS/Xcode -XCSUISourceControlLogLevel 2

在日志中,我注意到有人试图用“%2520”替换空格。在大多数其他扩展存储库 URL 的地方,都会看到“%20”。

我正在使用本地 Xcode 服务器和 ssh。因此,如果您的应用名称中有空格(多个单词),请尝试以下操作:

1) 不要使用 Xcode/Source Control/[Your Project]/Configure [Your Project]... 下的“+ Create New Remote...”(这将创建名称中带有空格的存储库。 )

2) 使用 Server,创建一个名称中没有空格的存储库。在左侧面板中选择 Xcode,使用“Repositories”选项卡,单击“+”,然后输入不带空格的名称。然后点击“创建”。

3) 回到您的开发机器上,使用 Xcode/Source Control/[Your Project]/Configure [Your Project]... 下的“Add Remote”(+ 在 Remotes 选项卡下)。输入存储库的路径,例如:

名称:原产地 地址:ssh://username@servername.local/git/NoSpaceName.git

您可能会被要求输入密码。 当您的开发机器能够访问存储库时,您可以签入代码。然后您可以继续创建机器人。创建机器人时,可能会要求您提供存储库凭据。选择更改并提供用户名和密码。然后选择next来设置bot参数如Schedule等,直到bot被创建。

仅供参考。如果您需要删除指向旧/坏存储库的链接,您可能会多次启动和关闭 Xcode/Preferences.../Accounts 和 Xcode/Source Control/[Your Project]/Configure [Your Project ]...

【讨论】:

以上是关于无法使用 OSX Server 3.2.1 在 XCode 6.0.1 中创建 CI Bot的主要内容,如果未能解决你的问题,请参考以下文章

构建源时 OSX Server 3.2.1 集成构建超时

无法在 osx 上使用 nginx + gunicorn 查看静态文件

SQL Server、Python 和 OS X

有没有人成功使用 Cocoapods 和 OSX Server 3.2 及更高版本?

将服务器添加到团队时出现 OS X Server 持续集成错误

无法在 gcc (OS X) 上使用 curses 编译)