【发布时间】:2021-04-01 14:53:22
【问题描述】:
这个问题是对这个问题的跟进 How to pass jenkins credentials into docker build command?
我正在从我的 groovy 管道中的 jenkins 凭证存储中获取 ssh 密钥文件,并且 通过 --build-arg 将它传递给 docker build 命令,这样我就可以从我的 docker 容器中的私有 git repos 签出和构建工件
凭据存储 id :cicd-user,它可以按预期从我的 groovy Jenkinsfile 中检查我的私人作品
checkout([$class: 'GitSCM',
userRemoteConfigs: [[credentialsId: 'cicd-user', url:'ssh://git@bitbucket.myorg.co:7999/A/software.git']]
我访问它并尝试将其传递给 docker build 命令:
withCredentials([sshUserPrivateKey(credentialsId: 'cicd-user', keyFileVariable: 'FILE')]) {
sh "cd ${WORKSPACE} && docker build -t ${some-name} --build-arg USERNAME=cicd-user --build-arg PRIV_KEY_FILE=\$FILE --network=host -f software/tools/jenkins/${some-name}/Dockerfile ."
}
在 Dockerfile 我做
RUN echo "$PRIV_KEY_FILE" > /home/"$USERNAME"/.ssh/id_rsa && \
chmod 700 /home/"$USERNAME"/.ssh/id_rsa
运行 echo "Host bitbucket.myorg.co\n\tStrictHostKeyChecking no\n" >> ~/.ssh/config
但我看到以下问题
"加载密钥"/home/cicd-user/.ssh/id_rsa" :(无效格式) “git@Bitbucket.mycomp.co:权限被拒绝(公钥) “致命:无法从远程存储库中读取”
过去我通过像下面这样的 cat'ing 从外部将 ssh priv 密钥作为 --build-arg 传递
--build-arg ssh_prv_key="$(cat ~/.ssh/id_rsa)"
我应该做类似的事情
--build-arg PRIV_KEY_FILE="$(cat $FILE)"
关于可能出了什么问题或我应该在哪里寻找正确调试的任何想法?
【问题讨论】:
标签: docker jenkins devops credentials jenkins-docker