我最近使用Docker和Jenkins设置了自己的小CI/CD设置。我已经为Jenkins安装了新的Blue Ocean插件,并设置了一条管道,该管道:从GIT中拉出 ->运行测试 -> builds。
但是,我无法找到如何在管道中创建适当的部署/发布步骤。构建后,我希望Jenkins容器能够将SSH ssh到我的VPS上,该VP运行所有Docker容器,然后拉动然后重建该特定容器(使用Docker Compose(。
我注意到蓝色海洋中可以选择输入一个bash脚本,该脚本将在测试/构建后运行 - 这是我应该使用的吗?
我一直在考虑使用jenkins上的ssh插件使用该发布,但是我找不到此插件是否与蓝色海洋一起使用,也无法找到如何为Jenkins容器创建SSH键被使用。
我将非常感谢有关如何发布/构建更新的容器的任何见解/建议。
终于使它起作用了!是的,解决方案是将" SSH-Agent"插件用于Jenkins(在Jenkins Docker容器上使用!(。
我做了以下操作:
- 只是在我的本地计算机(SSH-Keygen(上创建了SSH Keypair
- 复制将ID_RSA粘贴到SSH-Agent插件
- 通过id_rsa.pub复制到我想在 上运行构建/发布脚本的计算机
我的错误是直接使用Blueocean而不真正了解Jenkins的构建方式。Blueocean不允许与SSH-Agent集成。您必须添加:
sshagent (credentials: ['deploy-dev']) {
sh 'ssh -o StrictHostKeyChecking=no -l cloudbees 192.168.1.106 uname -a'
}
到您的构建正在使用的Jenkinsfile。
我希望这对遇到相同问题的其他所有人都有帮助。
一个简单的sh 'ssh...'
步骤应该足以在您的VPS上调用脚本,该脚本(脚本(处理所有Docker操作。
如果您的私有SSH键受密码保护,则可能需要用管道步骤" ssh-agent"将其包裹在代理中:
node {
sshagent (credentials: ['deploy-dev']) {
sh 'ssh -o StrictHostKeyChecking=no -l cloudbees 192.168.1.106 uname -a'
}
}
作为PMR注释,Jenkins SSH凭据插件可用于存储SSH私钥。
您还可以阅读最近的文章"与Jenkins的SSH凭据管理"。