我第一次尝试在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
在我的本地计算机上。这意味着我假设的访问权限。我该如何检查访问权限?特拉维斯似乎可以在同一个组织内正常克隆其他回购?任何帮助非常感谢!!
答案 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