美文网首页
4. GitLab Runner介绍

4. GitLab Runner介绍

作者: shark_tear | 来源:发表于2021-08-17 23:21 被阅读0次

    目前就自己的感觉而言,gitlab的runner和jenkins的agent是一个概念,是一个用来安装到各种系统上的软件包,安装好了以后,能够从项目的CI/CD管道里读取任务到机器上去执行,执行完成后,将结果返回。一般执行的任务都是用来编译打包,这种方式可以同时在多个机器上并行处理多个任务,提高CI/CD的效率。

    Gitlab的Runner是一个使用Go语言编写的开源软件,能够运行在目前常用的平台上,例如:

    • Linux/Unix
    • Windows
    • MacOS
    • Kubernetes

    等等,在Linux上还支持多种不同的发行版。让runner的扩展变得更加容易。

    GitLab Runner提供的特性

    • 同时运行多个任务(只要硬件支持)

    • 多个服务器对应多个token(甚至每个项目一个,token的作用下面会讲解)

    • 单个token可以限制并发运行的任务数量

    • 任务可以在以下环境里运行

    • 本地

    • Docker容器里

    • 通过SSH在Docker容器上

    • 在不同的云和虚拟化环境里动态缩放的Docker容器里

    • 连接到远程的SSH服务器上

    • 以Go语言编写,只有一个二进制文件,不需要其他依赖。安装和使用简单

    • 可以支持多平台(上面讲过)

    • 运行自定义任务的运行环境

    • 可以启用Docker容器缓存

    • 内嵌Prometheus 指标HTTP服务器

    GitLab Runner版本的选择

    为了兼容性期间,Runner的版本一般要和部署的Gitlab版本一致,毕竟从架构上看,Gitlab类似于服务端,Runner类似于客户端,如果两端版本不一致,可能会导致一些意料之外的错误。

    Runner的注册

    将Runner在选择的机器上安装好了以后,需要将Runner注册到你部署的Gitlab上,这样Gitlab才能知道有多少管理的Runner,同时Runner也能根据CI/CD里的配置(具体什么配置会在.gitlab-ci.yaml文件里讲到)来选择自己对应的任务去执行。

    执行器(Executor)

    Runner根据CI/CD上的配置选择自己对应的任务,将任务内容读取到它所在的机器上。但是实际执行任务的并不是Runner,它只负责取任务并在任务执行成功或者失败的时候,返回对应的结果。实际执行任务的是执行器(Executor),执行器是一个造出来的概念,实际上就是机器上的shell,例如linux上的bash shell、Windows上的PowerShell等。因为在CI/CD的任务里面,无非也都是代码编译、打包,而编译打包的命令都来自shell环境。而在注册Runner的时候,会要求你为这个Runner选择一个执行器,即这个Runner可以提供一个什么样的shell环境让你运行命令。因此Bash Shell 类型的Runner只能运行bash命令,如果你给它传一个powershell的命令,就直接报错。

    Runner的类型

    在注册之前,需要确认Gitlab上谁有权限访问它,而这个权限是根据Runner的类型来确定的,目前Gitlab里的Runner类型有:

    • 共享Runner(Shared Runner),所有项目可以使用
    • 群组Runner(Group Runner),特定群组里的所有项目和子群组可以使用
    • 特定Runner(Specific Runner),用于独立的项目。

    当你在注册Runner的时候,你需要为Gitlab实例、群组或项目指定一个Token,这个Token用于告诉Runner,谁可以使用它。

    标签(Tags)

    注册runner的时候,可以给它添加一个标签。添加标签以后,就可以在CI/CD配置文件里,通过标签来调用特定的Runner,如下所示:

    job: 
      tags: 
      - ruby
    

    上面的内容是一个.gitlab-ci.yaml里的job内容,调用带有ruby标签的Runner。

    配置Runner

    Runner会带有一个config.toml配置文件,在Linux系统安装中,它位于 目录下。这个文件里可以为特定Runner添加配置,也可以为所有Runner添加配置。可以指定想日志或缓存这些配置,还可以设置并发、内存、CPU限制等等。

    使用Runner

    在Runner安装并注册完毕,且配置的Runner类型在你的项目中可以使用的话,那么就可以直接在CI/CD的配置文件.gitlab-ci.yaml文件里通过Runner的名称或者标签来直接调用它。当你往仓库里提交代码后,就会触发流水线运行,然后runner的执行器就会处理对应任务里的命令。

    Runner的执行流程

    下面的图片演示了Runner怎么注册,以及是怎么请求任务和处理任务的。也展示了那个动作使用注册、认证和任务token,如下所示:


    show.png

    从上面图片中可以看到,具体的流程是:

    • Runner向/api/v4/runners发送POST请求,请求里带有注册Token
    • 注册成功后返回runner_token
    • Runner通过循环向/api/v4/rquest发送POST请求,请求里带上runner_token
    • 认证通过后接口返回带有任务信息的payload和任务相关的job_token
    • 然后将任务信息发送给执行器,执行器使用job_token来
    • 克隆所需的代码
    • 下载配置或组件
    • 执行器执行完成后,返回任务输出和任务状态信息
    • Runner向GitLab返回任务输出、任务状态以及job_token
      以上就是GitLab Runner的基本知识。

    相关文章

      网友评论

          本文标题:4. GitLab Runner介绍

          本文链接:https://www.haomeiwen.com/subject/gnjwbltx.html