GitLab目前还没有在构建环境(GitLab Runner 运行的地方)中管理SSH密钥的内置支持。
在以下场景中,您可能需要使用 SSH密钥:
- 使用包管理器下载私有包。如 Bundler
- 将应用程序部署到您自己的服务器上。如 Heroku
- 从构建环境向远程服务器执行SSH命令
- 将文件从构建环境 Rsync 到远程服务器
目前使用最多的方法是通过扩展 .gitlab-ci.yml
将SSH密钥注入构建环境。它是一个适用于任何类型的 Runner (例如Docker或shell)的解决方案。
实现
- 使用
ssh-keygen
在本地创建新的 ssh 密钥对 - 添加 private key 中的内容到 Gitlab 仓库的环境变量中,将公钥复制到您想要访问的服务器上(一般为
~/.ssh/authorized_keys
文件中 ),或者如果您正在访问私有的GitLab存储库,则将其添加为部署密钥。 - 在 job 执行期间运行
ssh-agent
加载私钥
可以在 .gitlab-ci.yml
中添加如下内容来运行 ssh-agent
加载私钥。
1 | before_script: |
在 ssh 登录时有时需要对远程主机添加信任。GitLab 提供了以下3种方式,可以补充在 .gitlab-ci.yml
中以保证 ci 流程正确执行
1 | before_script: |