Gitlab Runner安装与配置

ops/2025/1/16 8:58:04/

由于格式和图片解析问题,为了更好阅读体验可前往 阅读原文

本篇使用Docker安装Gitlab runner进行runner的安装和注册,其他方式请参考官方文档非Docker安装Gitlab runner

请确保runner版本和gitlab版本兼容以及docker相关版本兼容问题

下载镜像

docker pull gitlab/gitlab-runner:v14.6.0

创建挂载卷

mkdir -p /srv/gitlab-runner
cd /srv/gitlab-runner && mkdir config certs# 将gitlab的域名正式复制到 certs 中

运行runner

docker run -d --name gitlab-runner --restart always \-v /srv/gitlab-runner/config:/etc/gitlab-runner \-v /srv/gitlab-runner/certs:/etc/gitlab-runner/certs \-v /var/run/docker.sock:/var/run/docker.sock \-v /etc/hosts:/etc/hosts \gitlab/gitlab-runner:v14.6.0

如果你的gitlab使用的了本地域名和自签证书,这里进行域名和hosts进行挂载

注册runner

可以通过交互式和非交互式注册。注册runner需要runner的token,token用来连接gitlab和runner,这是官方Runner注册文档

注册token

Gitlab runner的注册token需要从gitlab中获取,token可以从具体项目中获取也可以从gitlab全局获取

如这里是web1项目的runner token

image-20230319175134576

你可以联系root账户创建group的runner或admin全局的runner

image-20230319175359461

交互式注册

# 方式1
docker run --rm -it -v /srv/gitlab-runner/config:/etc/gitlab-runner gitlab/gitlab-runner:v14.6.0 register# 方式2
# 进入 gitlab-runner
docker exec -it gitlab-runner bash
> gitlab-runner -h
# 注册runner
> gitlab-runner register # 交互式注册看下方图

执行以上命令会进入runner镜像内部交互式进行注册

非交互式

# 如果你的gitlab使用http + ip形式
docker run --rm \-v /srv/gitlab-runner/config:/etc/gitlab-runner \-v /etc/hosts:/etc/hosts \gitlab/gitlab-runner:v14.6.0 register \--non-interactive \--executor "docker" \--docker-image alpine:latest \--url "http://192.168.10.10" \--registration-token "-_d2uxhfknTiFxm9oKs1" \--description "admin register runner" \--tag-list "admin" \--run-untagged="true" \--locked="false" # 如果你的gitlab使用https,需要进行证书认证
docker run --rm \-v /srv/gitlab-runner/config:/etc/gitlab-runner \-v /etc/hosts:/etc/hosts \gitlab/gitlab-runner:v14.6.0 register \--non-interactive \--executor "docker" \--docker-image alpine:latest \--url "https://gitlab.ihengshuai.com" \--registration-token "Gitlab Runner Token" \--description "testing docker-runner" \--tls-ca-file /etc/gitlab-runner/certs/gitlab.ihengshuai.com.crt \--tag-list "testing" \--run-untagged="true" \--locked="false"  

这里执行非交互命令:注册成功

devops ~ docker run --rm \
>   -v /srv/gitlab-runner/config:/etc/gitlab-runner \
>   -v /etc/hosts:/etc/hosts \
>   gitlab/gitlab-runner:v14.6.0 register \
>   --non-interactive \
>   --executor "docker" \
>   --docker-image alpine:latest \
>   --url "http://192.168.10.10" \
>   --registration-token "-_d2uxhfknTiFxm9oKs1" \
>   --description "admin register runner" \
>   --tag-list "admin" \
>   --run-untagged="true" \
>   --locked="false"
Runtime platform                                    arch=arm64 os=linux pid=7 revision=5316d4ac version=14.6.0
Running in system-mode.Registering runner... succeeded                     runner=-_d2uxhf
Runner registered successfully. Feel free to start it, but if it's running already the config should be automatically reloaded!

参数说明

  • non-interactive:不需要交互
  • executor:runner执行器,有很多,这里选择docker
  • docker-image:runner基础镜像
  • url:指定gitlab的地址,根据gitlab的配置地址填写
  • registration-token:runner注册token,项目、admin、group的token都可以
  • description:runner相关描述
  • tag-list:runner的标签,可以指定多个,流水线运行时可以通过runner标签指定runner运行,如果你忘记填写,可以在注册后修改
  • tls-ca-file:如果你使用了https且使用了自签证书,需要指定证书使runner信任此证书( https://docs.gitlab.com/runner/install/docker.html#installing-trusted-ssl-server-certificates)
  • run-untagged:如果流水线的作业没指定tag也可以用此runner运行
  • locked:关闭锁定,默认情况下runner注册后都是锁定状态,不可以执行,需要在后台打开,这里直接注册时打开

配置文件

gitlab runner在注册后会生成对应的配置文件/srv/gitlab-runner/config/config.toml(挂载目录),容器位置在/etc/gitlab-runner/config.toml

# 同时可以运行几个runner
concurrent = 2# 检查间隔,3s内检查代码变动就会执行runner
check_interval = 3[session_server]session_timeout = 1800# 注册的runner,每注册一个,就会多一份 [[runners]] 配置
[[runners]]# runner 描述name = "testing docker-runner"# gitlab 地址url = "http://192.168.10.10"# 注册tokentoken = "iz1PoRca5ZD5gV1uydX4"# ssl证书位置tls-ca-file = "/srv/gitlab-runner/config/ssl/gitlab.ihengshuai.com.crt"# runner执行器executor = "docker"[runners.custom_build_dir][runners.cache][runners.cache.s3][runners.cache.gcs][runners.cache.azure][runners.docker]tls_verify = false# docker执行器的基础镜像image = "alpine:latest"privileged = falsedisable_entrypoint_overwrite = falseoom_kill_disable = falsedisable_cache = false# 镜像拉取策略,流水线过程中如果某个已经在本地了,就不会再拉取了,直接使用本地镜像pull_policy = "if-not-present"# runner缓存,在docker中使用docker执行器,需要映射宿主机的docker.socketvolumes = ["/cache", "/var/run/docker.sock:/var/run/docker.sock"]shm_size = 0# [[runners]]
# ....

配置重载

当你更改了runner的配置文件后,你需要重新加载配置文件,你可以使用一下方式:

docker restart gitlab-runner# 或进入容器
docker exec -it gitlab-runner bash
gitlab-runner restart

runner类型

根据runner的使用范围可以将其分为以下几类:

  • shared:共享runner,gitlab中的所有项目都可以使用
  • group:只有当前组才可以使用
  • specific:只有当前项目才可以使用

runner执行器

gitlab runner由很多可以在不同场景下运行构建的执行器

<a class=gitlab-runner-compare" />

Shell 执行器

Shell 是最简单的执行器。您的构建所需的所有必须依赖项都需要手动安装在极狐GitLab Runner 所安装的机器上。

虚拟机执行器(VirtualBox / Parallels)

这种类型的执行器允许您使用已经创建的虚拟机,它被克隆且用于运行构建。我们提供两个完整的系统虚拟化选项:VirtualBoxParallels。如果您想在不同操作系统上运行构建,它们很有用,因为它允许在 Windows、Linux、macOS 或 FreeBSD 上创建虚拟机,然后极狐GitLab Runner 连接虚拟机并在上面运行构建。它可以降低基础设施的成本。

Docker 执行器

https://docs.gitlab.com/runner/executors/docker.html

使用 Docker 是个很好的选择,因为它允许使用简单的依赖项管理(所有构建项目所需的依赖项都可以放到 Docker 镜像里)生成干净的构建环境。 Docker 执行器允许您很容易地使用依赖的服务, 例如 MySQL,创建构建环境。

Docker Machine 执行器

Docker Machine 是特殊版本的支持弹性伸缩的 Docker 执行器。 它类似正常的 Docker 执行器, 但由 Docker Machine 按需创建构建主机。

Kubernetes 执行器

Kubernetes 执行器允许您使用您构建现存的 Kubernetes 集群。 执行器会调用 Kubernetes 集群 API 并为每个极狐GitLab CI 作业创建新的 Pod(带有构建容器和服务容器)。

SSH 执行器

SSH 执行器是为执行器介绍完整性而添加进来的,它是所有执行器中最不受支持的一个。 它使极狐GitLab Runner 连接到外部服务器并运行构建。机构有一些使用 SSH 执行器的成功案例,但是通常我们推荐您使用其他类型的执行器。

自定义执行器

自定义执行器允许您指定您自己的执行环境。当极狐GitLab Runner 不提供执行器(例如,LXC 容器),您可以向极狐GitLab Runner 提供您自己的可执行文件,用以部署和清理任何您想使用的环境

由于格式和图片解析问题,为了更好阅读体验可前往 阅读原文


http://www.ppmy.cn/ops/150517.html

相关文章

IOS工程师

IOS工程师 职位描述 负责程序的开发测试调试工作。 负责后期维护 任职要求 有扎实的Objective-C/Swift语言基础 熟悉IOS开发技术&#xff0c;包括UI、网络等方面 熟悉IOS开发工具和相关开发测试工具的使用 熟悉多线程和网络编程&#xff0c;对高性能程序设计、架构有较多…

抖音矩阵是什么

抖音矩阵是指在同一品牌或个人IP下&#xff0c;通过创建多个不同定位的抖音账号&#xff08;如主号、副号、子号等&#xff09;&#xff0c;形成一个有机的整体&#xff0c;以实现多维度、多层次的内容覆盖和用户互动。以下是关于抖音矩阵的详细介绍&#xff1a; 抖音矩阵的类…

3D目标检测数据集——Nusence数据集

链接地址 [官网] nuScenes[arXiv] nuScenes: A multimodal dataset for autonomous driving[GitHub] nuScenes devkitnuScenes devkit教程数据集概述 2.1 数据采集 2.1.1 传感器配置 nuScenes的数据采集车辆为Renault Zoe迷你电动车,配备6个周视相机&#x

【OpenGL/Assimp】渲染模型、半透明材质与封装光源

文章目录 渲染成果Assimp库准备&#xff1a;Mesh类修改&#xff1a;透明贴图使用&#xff1a;光源封装&#xff1a;使用方式在如下测试环境中&#xff1a; 渲染成果 Assimp库准备&#xff1a; 从GitHub拉取源码&#xff0c;根据网络教程&#xff0c;借助CMake生成VS工程项目&a…

202年寒假充电计划——自学手册 网络安全(黑客技术)

&#x1f91f; 基于入门网络安全/黑客打造的&#xff1a;&#x1f449;黑客&网络安全入门&进阶学习资源包 前言 什么是网络安全 网络安全可以基于攻击和防御视角来分类&#xff0c;我们经常听到的 “红队”、“渗透测试” 等就是研究攻击技术&#xff0c;而“蓝队”、“…

springboot整合openfeign

在Spring Boot中整合OpenFeign可以帮助你轻松地实现服务之间的HTTP调用。OpenFeign是一个声明式的Web服务客户端&#xff0c;它使得编写Web服务客户端变得更加简单。以下是如何在Spring Boot项目中整合OpenFeign的步骤 1. 添加依赖 首先&#xff0c;在你的pom.xml文件中添加S…

qt设置qwidget背景色无效

最近在做一个界面&#xff0c;有三个子窗体&#xff0c;于是就把各个子窗体分别做成了三个UI&#xff0c;再将3个UI&#xff0c;放到1个UI&#xff0c;再将那一个UI在其他窗体上进行提升。 最后就发现怎么设置qwidget的背景都没有效果。 在Qt中&#xff0c;如果是给Qwidget的…

基于Springboot + vue实现的厨艺交流平台

&#x1f942;(❁◡❁)您的点赞&#x1f44d;➕评论&#x1f4dd;➕收藏⭐是作者创作的最大动力&#x1f91e; &#x1f496;&#x1f4d5;&#x1f389;&#x1f525; 支持我&#xff1a;点赞&#x1f44d;收藏⭐️留言&#x1f4dd;欢迎留言讨论 &#x1f525;&#x1f525;&…