Xcode 机器人和私有 Cocoapods

Posted

技术标签:

【中文标题】Xcode 机器人和私有 Cocoapods【英文标题】:Xcode Bots and Private Cocoapods 【发布时间】:2015-10-01 20:08:13 【问题描述】:

我一直在尝试使用我的私有 cocoapods 设置 Xcode CI(我有 3、2 个私有、1 个公共)。

我有一个简单的运行脚本:

export LANG=en_US.UTF-8
export PATH="/usr/local/bin:$PATH"
cd "$XCS_SOURCE_DIR/myproject"

if [ -e "Pods" ]
then
pod update --verbose
else
pod install --verbose
fi

并且我确保更新我的项目存储库以及 pod 存储库以拥有git@github.com:username/repo.git 样式的遥控器。

每次我运行集成时,都会收到以下错误:

Update all pods
  Preparing

Cloning spec repo `myproject` from `https://github.com/busycm/CocoapodsPrivateSpecs.git`
  $ /usr/local/bin/git clone https://github.com/busycm/CocoapodsPrivateSpecs.git myproject
[!] Unable to add a source with url `https://github.com/busycm/CocoapodsPrivateSpecs.git` named `myproject`.
You can try adding it manually in `~/.cocoapods/repos` or via `pod repo add`.

/Library/Ruby/Gems/2.0.0/gems/cocoapods-0.39.0.beta.4/lib/cocoapods/sources_manager.rb:48:in `rescue in find_or_create_source_with_url'
/Library/Ruby/Gems/2.0.0/gems/cocoapods-0.39.0.beta.4/lib/cocoapods/sources_manager.rb:53:in `find_or_create_source_with_url'
/Library/Ruby/Gems/2.0.0/gems/cocoapods-0.39.0.beta.4/lib/cocoapods/installer/analyzer.rb:623:in `block in sources'
/Library/Ruby/Gems/2.0.0/gems/cocoapods-0.39.0.beta.4/lib/cocoapods/installer/analyzer.rb:622:in `map'
/Library/Ruby/Gems/2.0.0/gems/cocoapods-0.39.0.beta.4/lib/cocoapods/installer/analyzer.rb:622:in `sources'
/Library/Ruby/Gems/2.0.0/gems/cocoapods-0.39.0.beta.4/lib/cocoapods/installer.rb:129:in `resolve_dependencies'
/Library/Ruby/Gems/2.0.0/gems/cocoapods-0.39.0.beta.4/lib/cocoapods/installer.rb:105:in `install!'
/Library/Ruby/Gems/2.0.0/gems/cocoapods-0.39.0.beta.4/lib/cocoapods/command/project.rb:71:in `run_install_with_update'
/Library/Ruby/Gems/2.0.0/gems/cocoapods-0.39.0.beta.4/lib/cocoapods/command/project.rb:156:in `run'
/Library/Ruby/Gems/2.0.0/gems/claide-0.9.1/lib/claide/command.rb:312:in `run'
/Library/Ruby/Gems/2.0.0/gems/cocoapods-0.39.0.beta.4/lib/cocoapods/command.rb:48:in `run'
/Library/Ruby/Gems/2.0.0/gems/cocoapods-0.39.0.beta.4/bin/pod:44:in `<top (required)>'
/usr/local/bin/pod:23:in `load'
/usr/local/bin/pod:23:in `<main>'
  Cloning into 'myproject'...
  fatal: could not read Username for 'https://github.com': Device not configured

该错误表明存在一些 ssh 身份验证问题,但令我好奇的是,即使所有存储库都设置为使用 ssh,日志中的所有克隆都是通过 https 完成的。

有人见过这样的事情吗?

【问题讨论】:

【参考方案1】:

Xcode Server 有一个单独的用户运行机器人,称为 _xcsbuildd。此用户可能需要自己的 SSH 公钥和私钥。我必须生成这些才能正确使用 Cocoapods。

首先在你的服务器终端中,sudo 为 _xcsbuildd 用户:

sudo -s -u _xcsbuildd

然后,在目录/var/_xcsbuildd/ 中生成SSH 密钥。

ssh-keygen -t rsa -C "example_name_here"

/var/_xcsbuildd/.ssh/ 中,您应该会看到一个名为id_rsa.pub 的文件。将其内容复制到您的 github 用户的新 SSH 密钥中。

最后,通过 ssh 进入 git@github.com 来验证你的 RSA 指纹:

ssh -T git@github.com (当被要求在此处验证您的指纹时回答“是”)

然后重新运行您的机器人,希望这可以解决您的问题。

【讨论】:

以上是关于Xcode 机器人和私有 Cocoapods的主要内容,如果未能解决你的问题,请参考以下文章

私有 api CTGetSignalStrength() 不适用于 Xcode 7.3

私有 api CTGetSignalStrength() 不适用于 Xcode 7.3

当我尝试在函数前面添加私有时,Xcode 抱怨“属性私有只能在非本地范围内使用”

多台Mac电脑使用一个apple开发者账号

如何将自定义视图拖动为 Xcode 6 中自定义视图的私有属性

Jenkins+私有git+Xcode打包ipa总结