使用 Jenkins Blue Ocean 部署构建

Using Jenkins Blue Ocean to Deploy builds

我最近一直在使用 Docker 和 Jenkins 设置我自己的小 CI/CD 设置。我已经为 Jenkins 安装了新的 Blue Ocean 插件并设置了一个管道:从 Git 拉取 -> 运行测试 -> 构建。效果很好。

但是,我无法找到如何在管道中创建适当的 deploy/publish 步骤。构建之后,我希望 Jenkins 容器通过 SSH 连接到我的 VPS 上,即 运行 连接所有 Docker 容器,拉取然后重新构建该特定容器(使用 Docker 撰写)。

我注意到在 Blue Ocean 中有输入 bash 脚本的选项,该脚本将在 test/build 之后 运行 - 这是我应该使用的吗?

我一直在考虑为 Jenkins 使用 Publish over SSH 插件,但我无法找到该插件是否适用于 Blue Ocean,也无法找到如何为 Jenkins 创建 ssh 密钥要使用的容器。

对于 insight/recommendations 我应该如何 publish/build 更新的容器,我将不胜感激。

一个简单的 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 comments, the JENKINS SSH Credentials Plugin可以用来存储ssh私钥
您还可以阅读最近的文章“SSH Credentials Management with Jenkins”。

终于成功了!是的,解决方案是使用 Jenkins 的 "ssh-agent" 插件(适用于 Jenkins Docker 容器!)。

我做了以下事情:

  1. 简单地在我的本地机器上创建了一个 ssh 密钥对 (ssh-keygen)
  2. 复制粘贴 id_rsa 到 ssh-agent 插件
  3. 将 id_rsa.pub 复制到我想要 运行 build/publish 脚本
  4. 的机器上

我的错误是在没有真正了解 Jenkins 中的构建工作原理的情况下直接使用 BlueOcean。 BlueOcean 不允许与 ssh-agent 集成。您必须添加:

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

到您的构建正在使用的 Jenkinsfile。

我希望这能帮助 运行 遇到同样问题的其他人。