使用Gitlab部署密钥和写访问权限

时间:2017-05-04 15:27:20

标签: ssh gitlab gitlab-ci gitlab-ci-runner

我目前正在运行CE版本8.17.4并尝试使用写访问权限设置部署密钥(截至8.16),以便我的运行时实例可以将构建工件提交回存储库。我采取了以下步骤进行设置:

  • 在运行器实例上,我使用以下命令生成了ssh keypair:

    sudo ssh-keygen -t rsa -C "label" -b 4096

  • 生成的密钥对已保存到 /home/gitlab-runner/.ssh/id_rsa 并受密码保护。

  • 在Gitlab中,我从管理控制台创建了一个公共部署密钥,并将 id_rsa.pub 的内容粘贴到相应的字段中,并验证了密钥指纹是否匹配。我检查了“允许写入访问”框。
  • 在我希望从跑步者启用存储库访问的私有项目中,我启用了新创建的公共部署密钥。
  • 这是一个LaTeX文档存储库,因此在 .gitlab-ci.yml 文件中,我在构建pdf后发出以下脚本:

    after_script:   - "git commit -am 'autobuild PDF'"   - "git push origin master"

当提交更改时,构建在成员上成功运行,直到 git push origin master 命令,并且抛出此错误:

fatal: Authentication failed for 'http://gitlab-ci-token:xxxxxxxxxxxxxxxx@host/project.git/'

确定。几个问题:

  1. 如果部署密钥只是一个SSH密钥,那么它不应该是在安全端口上连接还是重要?我没有找到关于使用这个新的写权限部署密钥功能的文档,所以我在上面的步骤中遗漏了什么?
  2. 我是否需要在提交消息中包含 [ci skip] 以避免循环CI构建?我在这个功能的原始发行票中看到了这个问题,但没看到这个步骤是否是必需的。
  3. 感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

Jawad的评论为我工作:你需要强制SSH。例如

git add remote ssh_remote git@host:user/project.git
git push ssh-remote HEAD:dev
谢谢jawad