2017-05-04 128 views
1

我最近使用Docker和Jenkins设置了自己的小型CI/CD设置。我为Jenkins安装了新的Blue Ocean插件,并建立了一个管道:从Git拉 - >运行测试 - >构建。这完美地工作。使用Jenkins Blue Ocean部署版本

但是,我一直无法找到如何在管道中创建适当的部署/发布步骤。构建完成后,我想让Jenkins容器通过SSH连接到运行所有Docker容器的VPS,然后重新构建特定的容器(使用Docker Compose)。

我注意到在蓝海有一个选项来输入一个bash脚本,在测试/构建后运行 - 这是我应该使用的吗?

我一直在寻找使用通过SSH发布插件为詹金斯,但我还没有能够找到这个插件是否与蓝色海洋一起工作,也没有我能够找出如何创建詹金斯容器的SSH密钥要使用的。

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

回答

1

一个简单的sh 'ssh...'步应该足以调用VPS上的脚本,脚本会处理所有码头操作。

如果你的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”。

+0

您好!感谢您的回答。但我仍然不确定如何将ssh密钥放到我的jenkins映像上(因为它在Docker上运行)。 – HarveyD

+0

@HarveyD你可以建立你自己的jenkins图像,用Dockerfile添加(COPY)ssh密钥。 – VonC

+0

@HarveyD使用凭证插件并将它们存储为凭证。 – pmr

2

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

我做了以下内容:

  1. 简单地创建了本地机器(SSH-凯基)
  2. 复制粘贴到id_rsa到SSH代理插件
  3. 复制了id_rsa上的SSH密钥对。酒吧到机器上我想运行构建/发布脚本

我的错误是直接使用BlueOcean而不真正了解Jenkins中的构建工作方式。 BlueOcean不允许与ssh-agent集成。您必须添加:

sshagent (credentials: ['deploy-dev']) { 
    sh 'ssh -o StrictHostKeyChecking=no -l cloudbees 192.168.1.106 uname -a' 
} 

对于您的版本正在使用的Jenkins文件。

我希望这可以帮助遇到同样问题的其他人。

+0

谢谢你的详细反馈,除了我的答案。 +1 – VonC