【问题标题】:Using Jenkins Blue Ocean to Deploy builds使用 Jenkins Blue Ocean 部署构建
【发布时间】:2017-05-04 02:36:01
【问题描述】:

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

对于我应该如何发布/构建更新的容器的任何见解/建议,我将不胜感激。

【问题讨论】:

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


    【解决方案1】:

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

    我做了以下事情:

    1. 只需在我的本地机器上创建一个 ssh 密钥对 (ssh-keygen)
    2. 复制粘贴的 id_rsa 到 ssh-agent 插件
    3. 将 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。

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

    【讨论】:

    • 感谢您的详细反馈,以及我的回答。 +1
    【解决方案2】:

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

    【讨论】:

    • 您好!感谢您的回答。但我仍然不确定如何将 ssh 密钥添加到我的 jenkins 映像中(因为它正在 Docker 上运行)。
    • @HarveyD 您可以构建自己的 jenkins 映像,并使用 Dockerfile 添加 (COPY) ssh 密钥。
    • @HarveyD 使用凭证插件并将它们存储为凭证。
    • @pmr 好点(包含在答案中以提高知名度。)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-08-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多