什么是 gitlab runner

Posted

技术标签:

【中文标题】什么是 gitlab runner【英文标题】:What is gitlab runner 【发布时间】:2018-04-27 03:09:34 【问题描述】:

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

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

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

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

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

我错过了什么?

TLDR 和其他:

问题:

    跑步者实际上是为了什么, 它应该安装在哪里? 它是否关心它在哪个目录中运行? 如果它不在乎运行哪个目录, 它在哪里执行它的脚本命令?在根?

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

我需要将我的执行程序设置为 docker 吗?我不应该将它设置为外壳,拉取图像并构建它吗? (假设 runner 正在远程 VM 上运行)。

【问题讨论】:

【参考方案1】:

跑步者究竟是为了什么?

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

它打算安装在哪里?

您可以在此处列出的所需环境中安装运行器。 https://docs.gitlab.com/runner/install/ 要么 您可以使用已安装在 GitLab 基础架构上的共享运行器。

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

是的。 runner 执行的每个任务都相对于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

【讨论】:

我认为这里的重点是:当有人推送提交或合并提交到主分支时,运行者如何知道它会缩短管道? gitlab如何触发runner?或者跑步者是否每隔一小时调用 api 到 gitlab 进行检查? 每个推送、合并和拉取请求都会发出事件。 Gitlab 监听它并启动 runner。这几乎是所有 CI/CD 工具,如 Github Action、Jenkins 等。【参考方案2】:

查看gitlab访问日志,runner不断轮询服务器

【讨论】:

以上是关于什么是 gitlab runner的主要内容,如果未能解决你的问题,请参考以下文章

为啥很多人选择用GitLab?

什么是 GitLab 实例 URL,我如何获取它?

什么是 gitlab runner

什么是与客户端的GitLab连接的工作流程? [关闭]

gitlab部署

gitlab