Jenkins Kube代理无法从git中提取

时间:2019-06-21 11:09:30

标签: git jenkins kubernetes

我正在Kubernetes(EKS)中运行Jenkins,并且在使用管道代码在Jenkins master上运行作业时可以成功提取git repos

gitInfo = checkout([$class: 'GitSCM',
                branches: [[name: '*/master']],
                doGenerateSubmoduleConfigurations: false,
                extensions: [[$class: 'CleanCheckout'], [$class: 'RelativeTargetDirectory', relativeTargetDir: 'config']],
                submoduleCfg: [],
                userRemoteConfigs: [[credentialsId: 'Gitlab', url: 'git@gitlab.test.com:USER/config.git']]
            ])

,它可以正常运行。 但是,当我尝试使用Jenkins kube代理时,它似乎无法正确地从主服务器获取密钥。使用完全相同的结帐代码,我得到了错误

using credential Gitlab
Cloning the remote Git repository
ERROR: Error cloning remote repo 'origin'
hudson.plugins.git.GitException: Command "git fetch --tags --progress git@gitlab.test.com:USER/config.git +refs/heads/*:refs/remotes/origin/*" returned status code 128:
stdout: 
stderr: Warning: Permanently added 'gitlab.test.com,11.11.111.11' (ECDSA) to the list of known hosts.
  Authorized uses only. All activity may be monitored and reported.
  Permission denied (publickey,gssapi-keyex,gssapi-with-mic).
  fatal: Could not read from remote repository.

在工作日志中,我希望看到它正在尝试使用的凭据的名称

using GIT_SSH to set credentials Git Lab key used to bootstrap Jenkins Master

以前有人见过这个问题吗?

我的容器规格是

spec:
containers:
- name: jnlp
  image: jenkins/jnlp-slave
  imagePullPolicy: Always
  env:
  - name: POD_IP
    valueFrom:
      fieldRef:
        fieldPath: status.podIP
  - name: DOCKER_HOST
    value: tcp://localhost:2375

更新: 因此,似乎是在凭据存储中id_rsa密钥的末尾删除了换行符。 我正在使用Jenkins Config作为代码从AWS Parameter Store中添加它,因此我认为这里出了问题,好像我从Parameter Store中转储密钥的内容并将其通过Jenkins UI复制并粘贴到凭证中一样工作有效....

1 个答案:

答案 0 :(得分:0)

该问题是由JCasC无法从AWS获取参数引起的,因此Jenkins凭证已损坏(空白)。

通过在凭据.xml上运行cat并在脚本控制台中解密凭据进行调试

println(hudson.util.Secret.decrypt("{XXXXXXXX}"))

我不知道主服务器如何使用空白凭据从Git克隆,但是即使在UI中,它也显示为有效:/