我试图第一次在Travis-CI上建立一个iOS项目,但是我很难让travis添加一个 private pod-spec仓库。

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

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

但是,当travis尝试添加我的 private Pod规范存储库时,出现此错误
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

在我的本地机器上。因此,这意味着我假设具有访问权限。我该如何检查访问权限? Travis似乎可以很好地克隆同一组织内的其他存储库?任何帮助,不胜感激!

最佳答案

它可以在您的机器上运行,因为ssh知道tyo在哪里寻找您的 public / private ssh密钥。

但是您需要向Travis添加这些密钥(甚至更好的是,为Travis配置添加一个专用于travis配置的新 public / ssh密钥),以使该环境能够进行身份验证并访问您的 private 存储库。

参见Pushing to github from travis-ci

请注意,您可以像使用 travis encrypt 中的this gist一样在.travis.yml文件中使用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

关于ios - git:致命的:克隆专用Cocoapod时无法从远程存储库读取,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24271379/

10-10 18:37
查看更多