如何在dockerized jenkins上设置git ssh连接

时间:2018-01-12 10:03:17

标签: git authentication docker jenkins ssh

有三种方法可以在jenkins和gitlab之间设置身份验证,我很困惑。 我想做的事情非常简单:从gitlab分支机构检查,使用maven构建,创建一个docker镜像,将其推入注册表

我做了什么:

  • 将gitlab插件安装到jenkins
  • gitlab和jenkins之间的设置API令牌(测试成功)
  • 在gitlab和jenkins之间设置webhook(好吧,如果要求git repo上的任何推送我的工作)
  • 将SSH PUBLIC凭据添加到Jenkins:来自包含jenkins docker容器的服务器的id_rsa.pub内容(使用admin用户)

我的管道第一阶段:

node {
deleteDir()
def mvnHome
def pom
stage('Checkout SCM') {
  git branch: 'develop', credentialsId: 'xxxxxxxxxxxxxxx', url: 'git@gitlab.com:blablabla/blablablabla.git'
  mvnHome = tool 'M3'
  pom = readMavenPom file: 'pom.xml'}

错误:

  

错误:错误克隆远程回购'来源'   hudson.plugins.git.GitException:命令" git fetch --tags --progress git@gitlab.com:blablabla / blablablabla.git + refs / heads / :refs / remotes / origin / "返回状态码128:   标准输出:   stderr:权限被拒绝(publickey)。   致命的:无法从远程存储库读取。

1 个答案:

答案 0 :(得分:1)

您必须按以下方式配置密钥对

假设你在gitlab中有你的公共ssh密钥(如果没有添加它) 在您的docker env中,但是用于jenkins的用户添加私钥

用于测试,从本地ssh到docker env并执行与Jenkins一样的命令:

git fetch --tags --progress git@gitlab.com:blablabla/blablablabla.git +refs/heads/:refs/remotes/origin/

另外,请在这里拍照 - https://www.blazemeter.com/blog/how-integrate-docker-jenkins,希望它会给你更多的见解。