什么是gitlab runner

问题描述 投票:0回答:2

我认为我从根本上错过了一些东西。我是 CI/CD 新手,正在尝试使用 gitlab 建立我的第一个管道。

该项目是一个预先存在的 PHP 项目。

我还不想清理它,目前我已经将整个东西推入了 docker 容器,并且它与谷歌云的 mysql 数据库等运行良好,因为它应该在本地以及远程谷歌云测试上虚拟机。 梦想是能够推送到开发分支,然后将开发分支合并到测试分支,然后触发自动化测试(简单部分),并且还导致远程测试虚拟机(托管在谷歌云上)拉取最新的更改,从最新的 docker 文件重建映像(或从 gitlab 映像寄存器中拉取最新的映像)...然后使用最新的映像重建容器。

我正在使用 gitlab 的 runner,但我不明白它的实际用途,尽管浏览了几乎所有的在线内容。 我是否只是将它安装在谷歌云虚拟机中,然后当我从我的开发机器推送到gitlab时......存储库将向运行器(在虚拟机上运行)发出“信号”,以执行一堆脚本(可能包括git pull 最新的更改?)。

因为我已经将我的应用程序预先打包到本地容器中(并将图像推送到图像注册表),我是否需要使用 docker 作为运行器上的执行器?或者我可以只使用 shell 并 shell 中的命令吗?

我错过了什么?

TLDR 和额外内容:

问题:

  1. 跑步者实际上是做什么用的, 它应该安装在哪里?
    它关心它在哪个目录中运行吗?
    如果它不关心运行哪个目录, 它在哪里执行脚本命令?根部?

  2. 如果我在本地构建自己的图像并将其上传到 gitlab 的注册表,

我需要将执行器设置为 docker 吗?我不应该只是将其设置为 shell、拉取映像并构建它吗? (假设运行程序正在远程虚拟机上运行)。

gitlab devops gitlab-ci-runner
2个回答
26
投票

跑步者到底是做什么用的?

您的项目以及一个

.gitlab-ci.yml
文件。
.gitlab-ci.yml
定义 CI/CD 管道有哪些阶段以及每个阶段要做什么。这通常包括构建、测试、部署阶段。在每个阶段中您可以定义多个作业。例如,在构建阶段,您可能需要在 debian、centos 和 windows 上构建 3 个作业(在 GitLab 术语表
build:debian
build:centos
build:windows
中)。 GitLab 运行者克隆项目,读取 gitlab-ci.yaml 文件并按照指示执行操作。所以基本上 GitLab 运行程序是一个执行一些指示任务的
Golang
进程。

它要安装在哪里?

您可以在此处列出的所需环境中安装运行程序。 https://docs.gitlab.com/runner/install/ 或者 您可以使用已安装在 GitLab 基础设施上的共享运行器。

它关心它在哪个目录中运行吗?

是的。运行器执行的每个任务都相对于

https://gitlab.com/help/ci/variables/README
中定义的 CI_PROJECT_DIR。但你可以改变这种行为。

它在哪里执行脚本命令?在根?

我需要将执行器设置为 docker 吗?难道我不应该将其设置为 shell、拉取映像并构建它吗?

一个运行器可以有多个执行器,例如 docker、shell、virtualbox 等,但 docker 是最常见的一个。如果您使用 docker 作为执行器,您可以从 docker hub 或配置的注册表中提取任何映像,并且可以使用 docker 映像执行大量 stff 操作。在 docker 环境中,通常您以 root 用户身份运行它们。 https://docs.gitlab.com/runner/executors/README.html


0
投票

GitLab runner 是一个构建实例,用于在多台计算机上运行作业并将结果发送到 GitLab,它可以放置在单独的用户、服务器和本地计算机上。安装后,您可以将运行程序注册为共享或特定。

共享跑步者: 这些运行程序对于具有类似要求的多个项目的作业非常有用。您可以使用单个或少量的 Runner 来处理多个项目,而不是在许多项目中使用多个 Runner,这将易于维护和更新。

具体跑步者: 如果作业对项目有特定要求或特定需求,这些运行程序对于部署特定项目非常有用。特定跑步者使用 FIFO(先进先出)流程以先到先得的方式组织数据。

受保护的跑步者: 可以保护跑步者保存重要信息。

© www.soinside.com 2019 - 2024. All rights reserved.