gitlab runner 安装、注册、配置、使用(Docker部署)

27 篇文章 0 订阅
26 篇文章 0 订阅

天行健,君子以自强不息;地势坤,君子以厚德载物。


每个人都有惰性,但不断学习是好好生活的根本,共勉!


文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。


gitalb部署请参考:K8S部署GitLab(详细完整版)

一、介绍

  • Gitlab Runner作为一个开源的项目,使用Go语言编写,可运行在不同系统中
  • Gitlab Runner用于运行作业并将结果发给gitlab服务器
  • Gitlab Runner与Gitlab CI结合使用,Gitlab CI是gitlab的开源持续集成服务,用于协调作业
  • Gitlab Runner的版本安装时应注意与Gitlab版本尽量一致以防版本差异导致报错

1. 类型

Gitlab Runner包含三种类型,分别对应三种不同情况(或者说是作用范围)

  • Shared:共享类型,运行整个平台的项目的作业(gitlab)
  • Group:项目组类型,运行特定group下的所有项目的作业(group)
  • Specific:特殊类型,运行指定的项目作业(project)

不同的类型有对应的token,可到对应的位置获取
区别在于左上角的名称不一样,平台-Admin Area,组-组名,项目-项目名称
以下是三个类型的Runner位置截图

1.1 平台Runner

在这里插入图片描述

1.2 组Runner

在这里插入图片描述

1.3 项目Runner

这里可以看到gitlab的url和token
三种类型的url是相同的,token不同
在这里插入图片描述

本篇在平台类型注册runner,即 使用平台类型的token进行注册runner

2. 状态

Gitlab Runner有两种状态,locked和paused

  • locked:无法运行项目作业
  • paused:不会运行作业

3. 原理

  • gitlab-runner注册到gitlab,gitlab中的代码更新时gitlab就会通知gitlab-runner
  • gitlab-runner拉取本地最新代码后执行.gitlab-ci.yaml文件定义的脚本,具体的脚本内容配置可参考官网

4. 部署方式

gitlab-runner支持多种部署方式,如本地Windows部署、容器Docker中部署、K8S集群中以pod形式部署
本篇以docker容器部署

5. 运行方式

gitlab-runner可以选择以什么执行器来运行,如docker、kubernetes、shell等
在注册时可以选择一种执行器来指定,本篇以docker为例

二、Docker中部署Gitlab Runner

1. 环境

  • 系统版本:Linux---centos
  • docker版本:24.0.7
  • gitlab版本:gitlab/gitlab-ce:15.6.0-ce.0
  • gitlab-runner版本:gitlab-runner:v15.6.0

注:gitlab-runner的版本号和gitlab的略有差异,runner的版本需加v前缀方可使用

注:为避免注册失败或后续runner不可用,gitlab-runner与gitlab最好不要安装在相同的服务器
如果只是测试环境,可在同一台进行尝试,遇到问题再解决,一般不会出问题
本篇gitlab服务在woker2节点,runner安装的位置为master主节点

2. 安装

为了挂载runner的配置文件,我们先创建一个文件夹用于后续挂载使用

mkdir -p /data/gitlab-runner/config

在这里插入图片描述

拉取gitlab-runner镜像,尽量与gitlab版本保持一致

docker pull gitlab/gitlab-runner:v15.6.0

在这里插入图片描述
在这里插入图片描述

运行容器

docker run -itd --restart always --name gitlab-runner \
-v /data/gitlab-runner/config:/etc/gitlab-runner \
-v /var/run/docker.sock:/var/run/docker.sock \
gitlab/gitlab-runner:v15.6.0

在这里插入图片描述

查看运行的容器

docker ps | grep gitlab

在这里插入图片描述

进入容器查看查看版本

docker exec -it gitlab-runner bash
gitlab-runner -v

在这里插入图片描述

3. Token获取

在gitlab的平台Runner中找到对应的URL地址和Token复制准备好,以备后续注册使用
主菜单–Admin–Runner
在这里插入图片描述
如图将其复制下来
在这里插入图片描述
RuUyXm9kDKxRLkeeCLXv

4. 注册

可通过gitlab-runner register命令进行交互式注册,也可通过命令行一次性将参数配置进行非交互注册

4.1 交互式注册

4.1.1 注册指令

首先进入容器,gitlab-runner为容器名

docker exec -it gitlab-runner bash

在容器中输入注册指令

gitlab-runner register

在这里插入图片描述

4.1.2 Gitlab-Url

根据提示填写gitlab的URL地址
此IP地址就是gitlab服务的地址,如gitlab服务器访问地址为172.30.0.222:30021

http://172.30.0.222:30021/

在这里插入图片描述
注:这里需要注意的是根据提示填写的是ip地址,但实际上应该填写完整的地址加端口号,如果不加端口则默认使用80端口访问,如果我们的gitlab访问地址的端口不是80则需要在这里加上端口来避免访问失败

4.1.3 Runner-Token

根据提示填写runner的Token,我们之前复制的是平台类型的共享型token,粘贴到这里

RuUyXm9kDKxRLkeeCLXv

在这里插入图片描述

4.1.4 Runner的名称

根据提示填写Runner的描述信息,也就是runner的名称,此处填gr01,会在Gitlab界面显示并可修改,也可不填

gr01

在这里插入图片描述

4.1.5 Runner-Tag

根据提示填写Runner的Tag信息,会在Gitlab的界面显示并可修改,也不填
后续作业可通过tag指定在哪个runner上面运行构建
注意:后面我用这个01的runner集成java项目CI/CD时出现了错误,原因是此参数不可为纯数字
建议英文开头加数字命名,如:runner-01

01

在这里插入图片描述

4.1.6 Runner-Maintenance

根据提示填写用户权限备注,可不填

root

在这里插入图片描述

4.1.7 Runner-Executor

根据提示选择Runner使用的执行器种类并填写,建议docker

docker

在这里插入图片描述

4.1.8 Runner-Executor-Version

根据提示填写docker执行器版本,后续作业以哪个镜像版本来运行job(可在.gitlab-ci.yml中修改需要的image)
这里用docker的最新版latest

docker:latest

在这里插入图片描述
执行完以上内容即可生成一个runner的配置文件,位置为/etc/gitlab-runner/config.toml
由于我们创建runner容器时挂载了目录,该文件会同步出现在我们创建的本地挂载目录中/data/gitlab-runner/config/config.toml

4.1.9 完整注册流程的截图

在这里插入图片描述

4.1.10 查看运行列表

使用命令查看运行列表,可以看到刚注册的gr01已在列表中

gitlab-runner list

在这里插入图片描述

4.1.11 Gitlab平台查看Runner

此时我们到gitlab平台上查看我们已注册的runner
主菜单–Admin–Overview–Runners
在这里插入图片描述

4.1.12 退出容器
exit

4.2 非交互式注册

4.2.1 进入容器
docker exec -it gitlab-runner /bin/bash
4.2.2 注册

在容器中执行以下命令即可完成注册

gitlab-runner register \
--non-interactive \
--url "http://172.30.0.222:30021" \
--registration-token "RuUyXm9kDKxRLkeeCLXv" \
--executor "docker" \
--docker-image maven:latest \
--description "gr02" \
--tag-list "02" \
--run-untagged="true" \
--locked="false" \
--access-level="not_protected"

--non-interactive 非交互注册执行时添加该参数
--url gitlab服务器地址,如端口不是80则需要将端口加上
--registration-token Runner Token ,gitlab平台获取
--executor 执行器引擎,可选,建议docker
--docker-image 镜像版本,后续Runner中pipeline以此镜像版本来执行作业,该参数也可后续在.gitlab-ci.yml文件中指定
--description Runner描述信息,即Runner的名称,后续可在平台中看到也可修改
--tag-list Runner的Tag信息,后续作业可通过tag指定在哪个runner上运行构建Runner,注册成功后会在gitalbCICD界面查看
--run-untagged 运行未指定tag的作业,开启
--locked 注册成功后runner为锁定状态,关闭
--access-level runner的访问级别,not_protected表示不受保护

执行后完成注册
命令行如下

[root@k8s-master ~]# docker exec -it gitlab-runner /bin/bash
root@5befda15d9b2:/# gitlab-runner register \
> --non-interactive \
> --url "http://172.30.0.222:30021" \
> --registration-token "RuUyXm9kDKxRLkeeCLXv" \
> --executor "docker" \
> --docker-image maven:latest \
> --description "gr02" \
> --tag-list "02" \
> --run-untagged="true" \
> --locked="false" \
> --access-level="not_protected"
Runtime platform                                    arch=amd64 os=linux pid=118 revision=44a1c2be version=15.6.0
WARNING: The 'register' command has been deprecated in GitLab Runner 15.6 and will be replaced with a 'deploy' command. For more information, see https://gitlab.com/gitlab-org/gitlab/-/issues/380872 
Running in system-mode.                            
                                                   
Registering runner... succeeded                     runner=RuUyXm9k
Runner registered successfully. Feel free to start it, but if it's running already the config should be automatically reloaded!
 
Configuration (with the authentication token) was saved in "/etc/gitlab-runner/config.toml"

截图如下
在这里插入图片描述

4.2.3 查看Runner

到gitlab平台中查看新建的Runner
主菜单–Admin–Overview–Runners
如图,gr02就是我们刚刚创建的Runner
在这里插入图片描述

4.2.4 退出容器
exit

5. 配置

这一步其实就是查看config.toml文件内容然后进行简单的描述,暂时不需要做任何修改,如后续有修改的需要可根据以下参数进行修改配置

5.1 容器内config.toml文件查看

进入gitlab-runner容器中查看生成的config.toml配置文件
进入容器gitlab-runner

docker exec -it gitlab-runner bash

查看配置文件

cat /etc/gitlab-runner/config.toml

内容如下:

concurrent = 1
check_interval = 0
shutdown_timeout = 0

[session_server]
  session_timeout = 1800

[[runners]]
  name = "gr01"
  url = "http://172.30.0.222:30021/"
  id = 1
  token = "_6msnKT89DcSsr8SCW9b"
  token_obtained_at = 2024-01-25T04:41:12Z
  token_expires_at = 0001-01-01T00:00:00Z
  executor = "docker"
  [runners.custom_build_dir]
  [runners.cache]
    MaxUploadedArchiveSize = 0
    [runners.cache.s3]
    [runners.cache.gcs]
    [runners.cache.azure]
  [runners.docker]
    tls_verify = false
    image = "docker:latest"
    privileged = false
    disable_entrypoint_overwrite = false
    oom_kill_disable = false
    disable_cache = false
    volumes = ["/cache"]
    shm_size = 0

[[runners]]
  name = "gr02"
  url = "http://172.30.0.222:30021"
  id = 2
  token = "k1zsbdVfgMA_4R9syxL6"
  token_obtained_at = 2024-01-25T08:06:33Z
  token_expires_at = 0001-01-01T00:00:00Z
  executor = "docker"
  [runners.custom_build_dir]
  [runners.cache]
    MaxUploadedArchiveSize = 0
    [runners.cache.s3]
    [runners.cache.gcs]
    [runners.cache.azure]
  [runners.docker]
    tls_verify = false
    image = "maven:latest"
    privileged = false
    disable_entrypoint_overwrite = false
    oom_kill_disable = false
    disable_cache = false
    volumes = ["/cache"]
    shm_size = 0

参数描述:
第一部分
concurrent 可并行运行作业的数量,0表示无限制
check_interval gitlab-runner检查配置的时间间隔,默认3秒

第二部分[session_server]
session_timeout 作业完成后会话可以保持活动状态的描述,默认1800秒

第三部分[[runners]]
name Runner名称
url gitlab server地址和端口,如果你的gitlab访问地址端口为80则可省略端口号
token Runner的特殊令牌,不是注册令牌
token_obtained_at token获取时间
token_expires_at token过期时间
executor Runner的执行器,表示runner中pipeline以什么方式运行即如何构建项目,执行器决定了runner用什么方式在什么环境上完成gitlab分配的CI job
[runners.custom_build_dir] 允许用户为作业定义自定义构建目录
[runners.cache] 分布式缓存目录
[runners.docker] 定义docker容器参数
tls_verify 启用或禁用对docker守护程序连接的TLS验证,这里是默认的禁用(false)
image 用于运行镜像的镜像,也可在.gitlab-ci.yml中指定
privileged 使容器以特权模式运行,不安全,默认关闭
disable_entrypoint_overwrite 禁用镜像覆盖entrypoint
oom_kill_disable 内存不足时报错,不终止容器中的进程,默认关闭
disable_cache docker执行器有两个级别的缓存:全局缓存和基于docker卷的本地缓存,此配置参数表示仅作用于禁用自动创建(未映射到主机目录)缓存卷的本地配置标志
volumes 安装挂载卷与docker-v标志的语法相同
shm_size 镜像的共享内存大小(以字节为单位)

截图
在这里插入图片描述

5.2 容器外挂载目录的config.toml文件查看

当然,因为我们挂载了该文件目录,故退出容器,在宿主机的对应的挂载位置找到这个文件查看
退出容器

exit

查看挂载目录的文件/data/gitlab-runner/config/config.toml

cat /data/gitlab-runner/config/config.toml

在这里插入图片描述
后续如需修改配置,文件修改后不需要重启,每隔三秒gitlab-runner会检查配置是否修改并重新加载
如需修改检查间隔时间可修改参数check_interval的值,300表示5分钟,即后续会5分钟检查一次

6. 命令使用

gitlab-runner命令汇总
命令均为容器内使用

6.1 注册指令

容器内注册Runner到gitlab

gitlab-runner register

6.2 列举运行程序

容器中,列举保存在配置文件中的所有运行程序

gitlab-runner list

6.3 验证runner是否连接

容器内,检查注册的runner是否可以正常连接,不能验证gitlab服务是否在使用runner

gitlab-runner verify

6.4 注销runner

容器内,注销已注册的runner

gitlab-runner unregister
6.4.1 用令牌注销

使用令牌注销已注册的runner

gitlab-runner unregister --url http://gitlab.xxxx.com/ --token xxxxx
6.4.2 用名称注销

使用名称注销,同名则删除第一个

gitlab-runner unregister --name runner名称
6.4.3 注销所有runner

直接注销所有runner

gitlab-runner unregister --all-runners

7. 使用演示

如何使用Runner来进行项目的持续集成和持续部署?

7.1 标准流程

标准的环境及流程如下:
本地项目中的根目录创建.gitlab-ci.yml脚本文件,然后将代码推送到gitalb仓库
.gitalb-runner发现代码更新开始执行脚本文件进行作业
.gitlab-ci.yml文件就是Gitlab-Runner执行任务的脚本文件,通过该文件定义需要执行的脚本代码来实现项目的持续集成和部署

为了更好的了解脚本文件的配置和执行,下面使用最简洁的方式创建和配置.gitlab-ci.yml文件

7.2 项目创建

提前在本地和gitlab仓库创建项目并建立连接,可参考:将本地项目推送到Gitlab仓库

7.3 创建.gitlab-ci.yml文件

到Gitlab仓库的项目中创建.gitalb-ci.yml
New file
在这里插入图片描述
文件名写.gitlab-ci.yml
在这里插入图片描述
然后将以下内容复制粘贴进去

stages:
  - check
  - build
  - deploy
job1:
  stage: check
  script:
     - echo 'job1 check 大河之剑天上来'
 
 
job2:
  stage: build
  script:
     - echo 'job2 build 千金散尽还复来'
 
job3:
  stage: deploy
  script:
     - echo 'job3 deploy 呼儿将出换美酒'

这里模拟三个阶段,检查、构建、部署,当然了这里只是简单的自定义流程,正常项目流程应该是构建、测试、部署

参数解释:
stages:就是自定义的流水线阶段,可根据需要进行定义多个不同的阶段,但任务会根据stages中定义的stage顺序执行
stage:必须在stages中选取指定,如果没有定义stage则会默认使用test,相同stage的任务将会并发执行,上一个阶段的任务结束后,下一个阶段的任务才会开始
job1、job2、job3:是每个任务的名称,可自定义
script:是执行脚本,这个参数是该文件中必须有的,包含脚本的语句,可以是数组
echo:打印字符串内容

提交修改Commit changes
在这里插入图片描述

当然,也可以在下图红框位置选择自己想要的模板进行使用,可自己定义,本篇跳过
在这里插入图片描述

创建完成后如下
在这里插入图片描述
该文件创建完成即可触发gitlab-runner执行,开始CI/CD的流水线工作

7.4 查看CI/CD

到项目的CI/CD界面查看任务

7.4.1 Pipelines

查看作业流程的进度情况
在这里插入图片描述stages三个阶段走完如下,点击红框中的passed会跳到对应的Jobs
(如果失败了,且到指定的job中查看黑窗口报错可尝试参考文章解决:Gitlab Runner执行CI/CD时报错:fatal: unable to access ‘http://gitlab-xxxxxxxxxxxxx/gitlab-instance-xxxxxxx
在这里插入图片描述
可通过点击红框中的三个阶段对应的job来查看job执行的内容,如job1
在这里插入图片描述
会进入黑窗口查看执行内容
在这里插入图片描述

7.4.2 Editor

Editor是编辑配置文件的操作,可对配置文件修改或重置
在这里插入图片描述

7.4.3 Jobs

Jobs菜单查看job的执行,同样点每个job对应的passed按钮可以进入黑窗口查看执行内容
在这里插入图片描述

7.4.4 Schedules

Schedules是定时任务,可根据需要创建定时任务
在这里插入图片描述


以上就是gitalb-runner的安装、注册、配置、使用(Docker部署)的全部内容
如果想了解更多关于gitlab-runner配置文件.gitlab-ci.yml的更多使用内容可参考:.gitlab-ci.yml文件的使用


感谢阅读,祝君暴富!

  • 23
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

寒山李白

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值