我正在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复制并粘贴到凭证中一样工作有效....
答案 0 :(得分:0)
该问题是由JCasC无法从AWS获取参数引起的,因此Jenkins凭证已损坏(空白)。
通过在凭据.xml上运行cat并在脚本控制台中解密凭据进行调试
println(hudson.util.Secret.decrypt("{XXXXXXXX}"))
我不知道主服务器如何使用空白凭据从Git克隆,但是即使在UI中,它也显示为有效:/