我最近使用Docker和Jenkins设置了自己的小CI / CD设置。我为Jenkins安装了新的Blue Ocean插件并设置了一条管道:从Git拉出来 - >运行测试 - >构建。哪个效果很好。
但是,我还没有找到如何在管道中创建适当的部署/发布步骤。在构建之后,我希望Jenkins容器通过SSH连接到运行所有Docker容器的VPS上,拉动然后重新构建该特定容器(使用Docker Compose)。
我注意到Blue Ocean中有一个选项可以输入一个在测试/构建之后运行的bash脚本 - 这是我应该使用的吗?
我一直在考虑使用Jenkins的Publish over SSH插件,但我无法确定此插件是否适用于Blue Ocean,也无法找到如何为Jenkins容器创建ssh密钥使用。
我非常感谢有关如何发布/构建更新容器的任何见解/建议。
答案 0 :(得分:2)
终于搞定了!是的,解决方案是使用Jenkins的“ssh-agent”插件(适用于Jenkins Docker容器!)。
我做了以下事情:
我的错误是直接使用BlueOcean而没有真正理解Jenkins中的构建是如何工作的。 BlueOcean不允许与ssh-agent集成。你必须添加:
sshagent (credentials: ['deploy-dev']) {
sh 'ssh -o StrictHostKeyChecking=no -l cloudbees 192.168.1.106 uname -a'
}
到您的构建正在使用的Jenkins文件。
我希望这可以帮助其他遇到同样问题的人。
答案 1 :(得分:1)
一个简单的sh 'ssh...'
步骤应足以调用VPS上的脚本,这将(脚本)处理所有docker操作。
如果您的私人ssh密钥受密码保护,您可能希望将该呼叫包含在具有pipeline steps "ssh-agent"的代理中:
node {
sshagent (credentials: ['deploy-dev']) {
sh 'ssh -o StrictHostKeyChecking=no -l cloudbees 192.168.1.106 uname -a'
}
}
作为pmr条评论,JENKINS SSH Credentials Plugin可用于存储ssh私钥 您还可以阅读最近的文章“SSH Credentials Management with Jenkins”。