首页 > 解决方案 > GitLab 在没有 SSH 的情况下部署到服务器

问题描述

我开始学习 GitLab CI,目前还不了解 GitLab runner 概念:

  1. 当一个人在“prod”服务器上安装 gitlab-runner 然后用 GitLab 的令牌注册它时,有一个视频,就是这样。他的 .gitlab-ci.yml 通过安装和注册的运行器在服务器上执行。为什么没有SSH?
  2. 如果我们通过 SSH 连接并执行部署命令,如果我们可以使用共享的,为什么我们需要安装 gitlab-runner?

标签: gitlabgitlab-cigitlab-ci-runner

解决方案


“考虑到执行命令的 GitLab 运行程序是完全相同的服务器,使用 SSH 在您的服务器上运行这些命令可能看起来很奇怪。但它是必需的,因为运行程序在 Docker 容器中执行命令,因此您将部署如果您在不使用 SSH 的情况下执行命令,则在容器而不是服务器内部。有人可能会争辩说,您可以使用 shell 执行器在主机本身上运行命令,而不是使用 Docker 作为运行程序执行器。但是,这将对您的管道产生约束, 即运行器必须与您要部署到的服务器相同. 这不是一个可持续和可扩展的解决方案, 因为有一天您可能希望将应用程序迁移到不同的服务器或使用不同的运行器服务器。在任何情况下,使用 SSH 执行部署命令都是有意义的,可能是出于技术或迁移相关的原因。” (с) Mike Nöthiger


推荐阅读