docker - 使用 Jenkins Blue Ocean 部署构建

标签 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 key 。

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

最佳答案

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

我做了以下事情:

  • 只是在我的本地机器上创建了一个 ssh key 对 (ssh-keygen)
  • 将 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。

    我希望这对遇到同样问题的其他人有所帮助。

    关于docker - 使用 Jenkins Blue Ocean 部署构建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43772920/

    相关文章:

    linux - Crontab 无法正常工作

    docker - Docker在第一行后停止

    build - Jenkins/Hudson 中有哪些属性可用于构建配置?

    python - docker crontab : not found

    java - 在 Jenkins 中为 Java 11 指定 JAVA_HOME

    Jenkins 管道 Jenkinsfile : 'node' and 'pipeline' directives

    Net::OpenSSH 模块上的 Perl SSH 连接错误

    python - 将 Ctrl-C 发送到通过 subprocess.Popen 和 ssh 启动的远程进程

    perl - Net::SSH::Perl 使用转发的 SSH key

    compilation - docker 无法编译程序(可能是未定义的宏AC_MSG_ERROR)