我正在尝试在作为Jenkins
Pipeline一部分运行的docker容器内执行一些git查询。在docker容器外面,sshsgent工作正常,我可以访问我的SCM没问题。在容器内部,我收到主机密钥验证问题。
有人可以帮助我解决我所犯的错误吗?
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
主机密钥验证失败
容器中的SSH连接无法验证主机(bitbucket-eng-
gpk1.com)的身份,这就是失败的原因。当詹金斯(Jenkins)设置一个容器时,它试图限制外界的东西数量,例如环境变量和它安装到该容器中的文件系统位置,以使构建步骤具有隔离性。在您的容器中,它在建立连接之前尚未接受VCS的主机密钥,并且它不是交互式终端,因此将失败。
有几种不同的方法来处理此问题。我想到了以下几点:
忽略主机密钥检查(知道这个故事的安全隐患(1,2)) -使用StrictHostKeyChecking
选项来禁用检查。该UserKnownHostsFile
选项在将接受的密钥通过管道传输到其他位置时很有用。也可以按~/.ssh/config
文件中的每个主机进行操作。
ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -p 7999 git@bitbucket-eng-gpk1.com whoami
将SSH密钥构建到Docker映像中(易碎)
~/.ssh/config
使用主机将文件从主机挂载到容器中
问题内容: 我正在将jenkins- workflow作业迁移到新的基于模板的工作流作业。因为内部版本号用作构建工件版本的一部分,所以工作流必须生成新的工作流的内部版本号,而该数字应大于旧的工作流。不幸的是,“下一个内部版本号”插件不适用于工作流管道。 有人知道这样做的好方法吗? 问题答案: 尝试在Jenkins脚本控制台中的脚本下面运行。将“ workFlow”更改为您的工作名称
嗨,我在容器内创建了三个帧,每个帧都有三个按钮,执行最小值,最大值和关闭功能。令人惊讶的是,只有一帧在工作,其余三帧不起作用。你能不能整理一下。
我正在使用jenkins job DSL插件创建一个jenkins pipeline作业来播种作业。如何获得DSL文件中的工作空间路径?詹金斯管道代码是这样的: 失败的 DSL 代码是: 出现错误: 在管道区域中创建的变量在作业DSL步骤中不可访问
我正在构建一个Quarkus应用程序,它使用resteasy处理http请求,并使用restclient调用另一个api,我需要传播一个头并动态添加另一个头,所以我添加了一个实现ClientHeadersFactory的类。 代码如下: 我的问题是配置的注入不起作用。我使用和两种方法都进行了尝试,如的javadoc所述。我也试图使类不抽象,但它没有改变任何东西。 MicroServicesConf
我试图设置jenkins管道使用gCloud,但我得到以下错误: /service-account-creds.json警告:无法在 /.config/gcloud/logs中设置日志文件,(错误:无法创建目录[/. config/gCloud/logs/2019.02.07]:权限被拒绝。 守则: Jenkins使用imagen Jenkins/Jenkins在容器中运行
问题内容: 我正在Ubuntu 13.04(Raring Ringtail)之上运行最新版本的Docker: 但是当我启动容器时 我没有看到任何限制,并且我的内核启用了cgroups内存限制: 我在这里想念什么明显的东西? 问题答案: 将不会显示它,因为这是通过cgroups强制执行的。而是可以在主机(容器外部)上使用和cgroup内存进行检查: 要查看它的内存不足,可以运行一些将使用比分配的内存