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 抱怨“属性私有只能在非本地范围内使用”