gitlab - GitLab 在没有 SSH 的情况下部署到服务器
问题描述
我开始学习 GitLab CI,目前还不了解 GitLab runner 概念:
- 当一个人在“prod”服务器上安装 gitlab-runner 然后用 GitLab 的令牌注册它时,有一个视频,就是这样。他的 .gitlab-ci.yml 通过安装和注册的运行器在服务器上执行。为什么没有SSH?
- 如果我们通过 SSH 连接并执行部署命令,如果我们可以使用共享的,为什么我们需要安装 gitlab-runner?
解决方案
“考虑到执行命令的 GitLab 运行程序是完全相同的服务器,使用 SSH 在您的服务器上运行这些命令可能看起来很奇怪。但它是必需的,因为运行程序在 Docker 容器中执行命令,因此您将部署如果您在不使用 SSH 的情况下执行命令,则在容器而不是服务器内部。有人可能会争辩说,您可以使用 shell 执行器在主机本身上运行命令,而不是使用 Docker 作为运行程序执行器。但是,这将对您的管道产生约束, 即运行器必须与您要部署到的服务器相同. 这不是一个可持续和可扩展的解决方案, 因为有一天您可能希望将应用程序迁移到不同的服务器或使用不同的运行器服务器。在任何情况下,使用 SSH 执行部署命令都是有意义的,可能是出于技术或迁移相关的原因。” (с) Mike Nöthiger
推荐阅读
- javascript - 来自 .on('click', function(e) 的多个事件 - SlickQuiz
- html - CSS - 如何在垂直上到下而不是从左到右对内联块进行排序?
- list - Haskell 函数保留列表的重复元素
- postgresql - plpgSQL 从 FUNCTION 返回记录类型
- java - 如何为自定义链表创建一些方法(例如:insertAtIndex())?
- c# - 将字符串字节数组内容复制到另一个数组,并将前缀 0 复制到 C# 中的单个数字
- c - 将 OpenSSL 的 C 实现转换为 Ruby 代码
- excel - 突出显示颜色在同一行中匹配的值
- java - 为什么 Java 8 Instant.now() 在我的本地服务器上显示错误的 UTC?
- node.js - 每个 npm 命令都需要永远