git:fatal:克隆Private Cocoapod时无法从远程存储库读取

时间:2014-06-17 18:58:16

标签: ios git cocoapods travis-ci

我第一次尝试在Travis-CI上设置一个iOS项目,我无法让travis添加私有pod-spec仓库。

我有一个运行此命令的前脚本:

- gem install cocoapods
- pod repo add MyPrivate-Repo git@github.com:myAccount/MyPrivate-Repo.git
...

但是,当travis尝试添加我的私有pod规范repo

时,我收到此错误
Cloning spec repo `MyPrivate-Repo` from `git@github.com:myAccount/MyPrivate-Repo.git`

[!] Pod::Executable clone 'git@github.com:myAccount/MyPrivate-Repo.git' MyPrivate-Repo

Cloning into 'MyPrivate-Repo'...

ERROR: Repository not found.

fatal: Could not read from remote repository.

Please make sure you have the correct access rights and the repository exists.

现在我对此非常陌生,如果我在这里遗漏了一些明显的东西,那么道歉。

我确信存储库确实存在,我通过执行

测试了它
git clone git@github.com:myAccount/MyPrivate-Repo.git

在我的本地计算机上。这意味着我假设的访问权限。我该如何检查访问权限?特拉维斯似乎可以在同一个组织内正常克隆其他回购?任何帮助非常感谢!!

1 个答案:

答案 0 :(得分:2)

它适用于您的计算机,因为ssh知道tyo在哪里查找您的公共/私有ssh密钥。

但是你需要添加这些密钥(或者更好的是,将专用于travis配置的新的public / ssh密钥添加到Travis),以便该环境能够验证和访问您的私人仓库。

请参阅Pushing to github from travis-ci

请注意,您可以使用.travis.yml文件中的travis encrypt,与this gist中的Luke Patterson (lukewpatterson)一样。

  

将私有SSH密钥加密到" -secure: xxxxx....."要放置在.travis.yml文件中的行,生成部署密钥,然后运行:(要查看加密数据的外观,请参阅this .travis.yml中的示例。

base64 --wrap=0 ~/.ssh/id_rsa > ~/.ssh/id_rsa_base64
ENCRYPTION_FILTER="echo \$(echo \"-\")\$(travis encrypt veewee-community/veewee-push \"\$FILE='\`cat $FILE\`'\" | grep secure:)"
split --bytes=100 --numeric-suffixes --suffix-length=2 --filter="$ENCRYPTION_FILTER" ~/.ssh/id_rsa_base64 id_rsa_
  

哈!它需要30行来挤压它。

这就像是:

env:
  global:
    - secure: "Y3Ox1GnYemOXPms5qUg//pnJBTh/9/kdnDa8BRXqurMaH6RuADcZnmSLjR7W\ny81/JuXMgToWN/+6zZALZyoYm87qRjjQAKfglA9nuSeXDSPhpERMXaf7RVUI\n8BpQYkmdY/HsQtGci4qqNfifQulp8TS/CpV+Kgx9k5JpulBeFow="
    - secure: "ePKK/XhvRqBiHKFPZdh5rGgupABVQyYUQWvl2uzfqgCRZ6xGIU+ZW89iiL27\n3cSfEL1x1FAXPkpslNOscz4INYgl8+dUvnmwnSuT2b/9ekpeDEhTmC+L06si\n15NLKCK7TUnS3wJ/WkA27ij43X+ArOqsTi2xvTXTPdn4utLjfIM="
    - secure: "C...
    ...
    ...
  

在Travis中运行后重新构建私有SSH密钥:(请参阅示例使用in this .travis.yml


来自in this gist的另一种类似技术Douglas Duteil (douglasduteil),在.travis.yml外部脚本中声明。

before_script: .travis/before_script.sh



echo -n $id_rsa_{00..30} >> ~/.ssh/id_rsa_base64
base64 --decode --ignore-garbage ~/.ssh/id_rsa_base64 > ~/.ssh/id_rsa
chmod 600 ~/.ssh/id_rsa
echo -e "Host github.com\n\tStrictHostKeyChecking no\n" >> ~/.ssh/config