如何在Travis CI中添加SSH密钥?

17
在Travis文档中的“设置”标签页中有一个“SSH密钥”,但在我的账户中没有。我需要添加SSH密钥以克隆GitHub上的子模块。
2个回答

18

在travis-ci.com(付费计划)上,使用SSH密钥仅适用于私有存储库。

使用travis命令行工具,您可以生成新的SSH密钥,该密钥将设置在Travis CI和您的GitHub用户帐户上(如果您为Travis CI使用专用GitHub用户)。

以下是必要的控制台命令:

# Install Travis command line tool
gem install travis

# Login to Travis Pro (private repositories) account
travis login --pro

# Generate and setup SSH key for your GitHub repository
travis sshkey --generate -r organization/repository

不必使用travis生成新的SSH密钥,也可以通过以下方式上传现有的SSH密钥:

travis sshkey --upload "C:\my_keys\id_rsa" -r organization/repository

创建SSH密钥后,建议从Travis用户的.ssh目录中的config文件引用此密钥。您可以通过将以下行添加到您的.travis.yml来实现这一点:

# http://docs.travis-ci.com/user/build-lifecycle/
before_script:  
  - echo -e "Host github.com\n\tHostName github.com\n\tUser git\n\tIdentityFile ~/.ssh/id_rsa\n" >> ~/.ssh/config

如需了解更多信息,请访问官方文档:生成新密钥


1
私有仓库和SSH密钥的文档:https://docs.travis-ci.com/user/private-dependencies - Xiao Hanyu
1
@Benny 我按照你的建议做了!没有出现任何问题。然而,当Travis CI尝试访问我的私有repo时,它仍然只是坐在那里等待我的GitHub账户的用户名。我该如何解决这个问题? - logankilpatrick
@logankilpatrick 你的".travis.yml"文件中是否有"git clone"命令,或者你是如何尝试从Travis CI访问你的私有repo的?如果你尝试克隆它,那么请使用SSH URL(git@github.com:ORG/PROJECT.git)而不是HTTPS URL(https://github.com/ORG/PROJECT.git)。 - Benny Code

10

目前此功能仅适用于私有存储库。

对于公共存储库,你不需要它们成为私有 Git URL(假设它们在 GitHub 上),所以将 URL 更改为使用公共克隆 URL 就可以解决问题。


3
如果我需要在公共存储库的构建中克隆私人存储库,该怎么办? - xeruf
@Xerus 如果你需要从私有仓库中获取文件来构建公共仓库,那么你可能并没有真正开发开源软件。 - pqnet
这只是为了部署而言。我正在构建一个开源项目,但每次发布一个版本时,都会伴随着一个小的闭源软件包的新版本。使用一个CI构建同时构建和发布两者更加方便。 - xeruf
听起来你的依赖关系是反过来了。让闭源项目的部署依赖于开源项目。 - Bradley Kreider

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接