我在用着Docker我正在运行 Jenkins 镜像。我正在尝试的镜像:https://github.com/orchardup/docker-jenkins
我需要生成一个 ssh 密钥对,以便我可以使用它来验证 bitbucket。这样 jenkins 就可以提取我的源代码并进行构建。通常我只需 su 到 jenkins 用户并运行 ssh-keygen 即可实现此目的。
我已经编辑了运行文件:
su jenkins
这样我就能够访问 shell,我可以在其中运行ssh-keygen
以将 ssh 密钥安装到 jenkins 用户主目录中~/.ssh
。 之后我退出,Dockerfile 继续。 此主目录/var/lib/jenkins
也作为卷安装在主机服务器上。
问题是 ssh 密钥出现在这里,但它们不起作用。有什么更好的方法可以实现这一点吗?
谢谢
答案1
我刚刚意识到你正在使用git
这个问题,而我却忽略了它......
从“Git 插件”2.0 版开始,可以在测试本身的“源代码管理”部分添加特定存储库的凭据。应该有一个名为“凭据”的标签,允许您使用用户名/密码或用户名/私钥组合。
如果您为每个想要运行测试的存储库创建一个部署密钥,请将此部署密钥添加为凭据中的私钥,这样就可以了。
答案2
您的方法应该有效。
您可以在主机上生成 ssh 密钥(ssh-keygen
)。用户不必是“jenkins”,可以是任何其他用户。
生成密钥后,确保将其作为卷与 Jenkins Docker 共享,以便 /var/lib/jenkins/.ssh/(在容器中)将包含主机的密钥(id_rsa
)。
您还必须确保将生成的公钥(id_rsa.pub
)作为“SSH 密钥”添加到 Bitbucket 中任何有权使用 Jenkins 执行您想做的事情的用户。