什么是gitlab runner

什么是gitlab runner,gitlab,devops,gitlab-ci-runner,Gitlab,Devops,Gitlab Ci Runner,我想我基本上错过了一些东西。我是CI/CD新手,正在尝试使用gitlab建立我的第一条管道 该项目是一个预先存在的PHP项目 我现在还不想把它清理干净,目前我已经把整个事情都推到了docker容器中,与google cloud的mysql数据库等进行对话运行良好,这在本地和远程google cloud测试VM上都是应该的。 我们的梦想是能够推进到开发分支,然后将dev banch合并到测试分支中,然后触发自动测试(简单的一部分),并使远程测试VM(托管在google cloud上)拉取最新的更改

我想我基本上错过了一些东西。我是CI/CD新手,正在尝试使用gitlab建立我的第一条管道

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

我现在还不想把它清理干净,目前我已经把整个事情都推到了docker容器中,与google cloud的mysql数据库等进行对话运行良好,这在本地和远程google cloud测试VM上都是应该的。 我们的梦想是能够推进到开发分支,然后将dev banch合并到测试分支中,然后触发自动测试(简单的一部分),并使远程测试VM(托管在google cloud上)拉取最新的更改,从最新的docker文件重建映像(或从gitlab映像寄存器拉取最新映像)... 然后用最新的图像重建容器

我在玩gitlab的runner,但我不明白它的真正用途,尽管我浏览了几乎所有的在线内容。 我是否只是将其安装在谷歌云虚拟机中,然后从开发机器推送到gitlab。。repo将“通知”运行程序(在VM上运行)执行一系列脚本(可能包括最新更改的git-pull?)

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

我错过了什么

TLDR和额外:

问题:

  • 跑步者到底是干什么的, 它将安装在哪里?
    它关心在哪个目录中运行吗?
    如果它不关心运行哪个目录, 它在哪里执行脚本命令?在根目录下

  • 如果我在本地构建自己的图像并将其上载到gitlab的注册表

  • 我是否需要将executor设置为docker?我是否应该将其设置为shell、提取映像并构建它?(假设运行程序在远程VM上运行)

    跑步者到底是干什么的

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

    它将安装在哪里

    您可以在此处列出的所需环境中安装运行程序。 或 您可以使用已经安装在GitLab基础设施上的共享运行程序

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

    是的。运行者执行的每个任务都与中定义的
    CI\u PROJECT\u DIR
    相关。但您可以更改此行为

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

    我是否需要将executor设置为docker?我是否应该将其设置为shell、提取图像并构建它

    运行程序可以有多个执行器,如docker、shell、virtualbox等,但docker是最常见的执行器。如果使用docker作为执行器,则可以从docker hub或配置的注册表中提取任何映像,并可以使用docker映像加载stff。在docker环境中,通常以根用户身份运行它们。

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

    我认为这里的要点是:当有人将提交或合并提交到主分支时,runner如何知道它运行管道?gitlab如何触发runner?或者runner是否每小时调用api到gitlab进行检查?每次推送、合并和拉取请求都会发出事件。Gitlab监听并启动runner。这几乎是所有CI/CD工具所做的事情,比如Github Action、Jenkins和其他工具。