gpt4 book ai didi

Jenkins 管道内的 docker 内部的 Git 不起作用

转载 作者:行者123 更新时间:2023-12-01 22:11:05 25 4
gpt4 key购买 nike

我正在尝试在作为 Jenkins 管道的一部分运行的 docker 容器内执行一些 git 查询。在 docker 容器之外,sshsgent 工作正常,我可以毫无问题地访问我的 SCM。在容器内,我遇到了主机 key 验证问题。
任何人都可以帮助解决我犯的错误吗?

script {
sshagent(['e9f7d09a-7b88-4bf7-814c-464f811d9519'])
{
sh("""
ssh -p 7999 git@bitbucket-eng-gpk1.com whoami
""")
}
docker.withRegistry('https://dockerhub.banana.com', 'banana-dockerhub-credential')
{
docker.image('banana_release_base').pull()
docker.image('banana_release_base').inside(
'''
-v /system:/system -v /tmp:/tmp --privileged -u 0
'''
)
{
sshagent(['e9f7d09a-7b88-4bf7-814c-464f811d9519'])
{
sh("""
echo $SSH_AUTH_SOCK
ssh -p 7999 git@bitbucket-eng-gpk1.com whoami
""")
}
}
}
}

第一次 whoami 调用输出:

[docker_git_test] Running shell script
+ ssh -p 7999 git@bitbucket-eng-gpk1.com whoami
d42967b44abe31d6

docker 容器输出中的第二次调用(和回显):

[docker_git_test] Running shell script
+ echo /tmp/ssh-dSoDZMggpAU1/agent.13
/tmp/ssh-dSoDZMggpAU1/agent.13
+ ssh -p 7999 git@bitbucket-eng-gpk1.com whoami
Host key verification failed

最佳答案

只是为了展示我的作品。根据 mkobits 的建议,我在 sh 命令中添加了两行来编写解决问题的 ssh 配置文件。

sshagent(['e9f7d09a-7b88-4bf7-814c-464f811d9519'])
{
sh("""
echo $SSH_AUTH_SOCK
mkdir ~/.ssh
echo 'Host *\n StrictHostKeyChecking no' > ~/.ssh/config
ssh -p 7999 git@bitbucket-eng-gpk1.com whoami
""")
}

它可以内置到 dockerfile 中,但由于我使用的是共享图像,因此这种方式适合我的目的。

编辑:我已经添加到一个 dockerfile 到这里我们是:

RUN useradd -r -u 1000 builder
COPY config /home/builder/.ssh/config
RUN chown builder:builder /home/builder/.ssh/*
USER builder
ENTRYPOINT ["/bin/bash"]

添加一个非 root 用户,这样文件就不会以 root 身份留在工作区中。需要以 root 身份运行 chown 并添加文件。添加的配置文件是:

Host *
StrictHostKeyChecking no

干杯!

关于Jenkins 管道内的 docker 内部的 Git 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47870282/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com