4. GitLab Runner介绍

2021-08-17  本文已影响0人  shark_tear

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

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

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

GitLab Runner提供的特性

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的时候,你需要为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

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

上一篇下一篇

猜你喜欢

热点阅读