我们的Jenkins控制器设置仅在代理容器中运行作业。我们使用jenkins/inbound-agent镜像来创建运行作业的容器。
对于我们的传统非容器化tomcat应用程序:我们需要运行一个Maven构建,将构建工件复制到目标服务器,并在该服务器上重新启动tomcat服务。这需要代理容器能够通过ssh连接到目标服务器以运行命令,因此我需要能够为代理容器提供有效的ssh密钥和ssh配置。(maven构建步骤在容器中成功运行,但无法从容器执行部署步骤)。
我尝试配置inbound-agent镜像,在创建容器时在jenkins用户的.ssh目录中挂载一个有效的ssh密钥和ssh配置,但是默认情况下挂载会将挂载文件的所有权赋予root用户,因此无法ssh,因为这些文件的权限不正确(inbound-agent镜像没有安装sudo,因此无法在构建前覆盖容器中这些文件的所有权)。
我们公司的安全策略要求我们不能将私钥烘焙到映像中,所以我不能在包含ssh密钥的基础jenkins/inbound-agent映像之外构建自定义映像。
向代理容器提供ssh密钥和配置的正确方法是什么,以便它可以通过ssh与数据中心中的服务器交互,作为我们部署的一部分?我相信我可以创建一个Jenkins SSH密钥凭证并将其写入/home/jenkins/.ssh,尽管这可能必须定义为每个作业的初始步骤,希望有更好的方法在容器启动期间将其作为默认步骤。
1条答案
按热度按时间eyh26e7m1#
你有没有试过ssh-agent-plugin?
将ssh密钥存储在jenkins凭证中,并按如下方式使用:
字符串
或withCredentials
型