使用Jenkins Blue Ocean部署构建

时间:2017-05-04 02:36:01

标签: docker jenkins ssh jenkins-pipeline jenkins-blueocean

我最近使用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密钥使用。

我非常感谢有关如何发布/构建更新容器的任何见解/建议。

2 个答案:

答案 0 :(得分:2)

终于搞定了!是的,解决方案是使用Jenkins的“ssh-agent”插件(适用于Jenkins Docker容器!)。

我做了以下事情:

  1. 只需在我的本地计算机上创建一个ssh密钥对(ssh-keygen)
  2. 将id_rsa复制粘贴到ssh-agent插件
  3. 通过id_rsa.pub复制到我想在
  4. 上运行构建/发布脚本的机器上

    我的错误是直接使用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”。