CI/CD:安装配置Gitlab Runner

CI/CD笔记.Gitlab系列
安装配置Gitlab Runner

- 文章信息 - Author: 李俊才 (jcLee95)
Visit me at: https://jclee95.blog.csdn.net
Email: 291148484@163.com.
Shenzhen China
Address of this article:https://blog.csdn.net/qq_28550263/article/details/136296840 Address of this article(HuaWei): https://bbs.huaweicloud.com/blogs/422579

【介绍】:GitLab Runner 是一个开源项目,用于运行 CI/CD 作业。它与 GitLab CI/CD 集成,可以在 GitLab 上执行自动化构建、测试和部署任务。


1. 概述

1.1 什么是 GitLab Runner?

GitLab RunnerGitLab CI/CD 的一个核心组件,承担着负责执行 CI/CD 作业的重要角色。它的设计目的在于为开发团队提供一个灵活且可靠的工具,用于自动化地构建、测试和部署他们的代码。不仅如此,GitLab Runner 还具有多样化的运行环境支持,包括本地机器、虚拟机和容器等不同的部署场景。这意味着团队可以根据项目的需求和特点,在不同的环境中灵活地执行作业,无需受到特定部署平台的限制。此外,GitLab Runner 提供了丰富的配置选项,使得团队可以根据自身需求进行定制化配置,以满足复杂的 CI/CD 流程。这种灵活性和可定制性为团队带来了更高的效率和便利性,使得他们能够更好地适应不同的项目和工作场景。

1.2 GitLab 工作原理

GitLab Runner 的工作原理是基于 与 GitLab 服务器之间的协作和通信

首先,当有作业需要执行时,GitLab 服务器会将作业信息发送给 Runner。这个作业信息包括了作业的定义、所需执行的命令以及其他相关配置。

Runner 接收到作业信息后,根据其中的定义和配置,开始在指定的执行环境中执行作业。这个执行环境可以是本地机器、虚拟机、容器等各种不同的平台,取决于在注册 Runner 时所配置的执行器。在执行作业的过程中,Runner 会按照作业定义的步骤逐一执行命令,例如拉取代码、运行测试、构建应用程序等。

一旦作业执行完成,Runner 会将执行结果返回给 GitLab 服务器。这个执行结果包括了作业的执行状态、输出日志以及其他相关信息。GitLab 服务器会将这些信息记录下来,并在构建页面中进行展示和分析,以便开发团队查看作业的执行情况和结果。通过这种协作方式,GitLab Runner 实现了作业的自动化执行和管理,为团队提供了高效、可靠的 CI/CD 解决方案。

2. Runner 类型和特性

2.1 Runner 类型

GitLab Runner 中,有两种常见的类型:Shared RunnerSpecific Runner。它们各自适用于不同的场景和需求。

Shared Runner 是一种全局性质的 Runner,它被配置为可供多个项目共享使用。这意味着同一个 Shared Runner 可以被多个项目同时利用。Shared Runner 通常适用于简单的 CI/CD 流程,其中的作业比较标准化,不需要针对特定项目进行定制。通过共享 Runner,团队可以更好地利用资源,减少重复配置的工作,并且能够更方便地管理和维护 Runner

相比之下,Specific Runner 则是专门为单个项目配置的 Runner。每个项目都可以拥有自己的 Specific Runner,该 Runner 的配置与该项目的需求和特点密切相关。Specific Runner 适用于需要定制化或具有特定要求的 CI/CD 流程的项目。例如,某个项目可能需要在特定环境下运行测试,或者依赖于某些特定的软件包或工具。在这种情况下,为该项目配置一个 Specific Runner 可以确保作业在合适的环境中执行,并且能够满足项目特定的要求。

总的来说,Shared Runner 适用于简单的、标准化的 CI/CD 流程,能够为多个项目提供共享资源;而 Specific Runner 则适用于定制化或具有特定要求的 CI/CD 流程,能够为单个项目提供定制化的执行环境和配置。选择使用哪种类型的 Runner,取决于项目的需求和团队的实际情况,以确保 CI/CD 流程的顺利运行和高效管理。

2.2 Runner 特性

GitLab Runner 的特性丰富多样,通过支持多种执行器、灵活配置 Runner 标签以及提供高级功能如缓存、并发、重试等,为团队提供了一个强大而灵活的 CI/CD 解决方案,帮助团队更高效地构建、测试和部署他们的应用程序。

首先,GitLab Runner 支持多种执行器,包括 ShellDockerKubernetes、SSH 等。这意味着你可以根据项目的需求选择合适的执行环境。例如,对于容器化的应用程序,你可以选择 Docker 执行器来在容器中执行作业,而对于需要在 Kubernetes 集群中运行的作业,你可以选择 Kubernetes 执行器。

其次,GitLab Runner 支持配置不同标签的 Runner。通过为 Runner 分配标签,你可以灵活地将 Runner 分配给不同的作业或项目。这样一来,你可以根据作业的特点和需求,将特定的 Runner 分配给相应的作业,从而实现作业的定制化执行。

另外,GitLab Runner 还支持一系列高级功能,如缓存并发重试等。

  • 缓存功能可以在作业执行过程中缓存依赖项,从而加速后续的作业执行速度。
  • 并发功能允许同时执行多个作业,提高了整体的 CI/CD 效率。
  • 重试功能可以在作业执行失败时自动进行重试,提高了系统的稳定性和可靠性。

这些功能的结合使用,可以有效地提高 CI/CD 流程的效率和稳定性,使团队能够更快速、更可靠地交付软件。

3. 安装和配置 GitLab Runner

你可以遵循以下步骤安装和配置 GitLab Runne

注:下面的介绍假设你已经安装了 Docker 或桌面版的 Docker Desktop 并且 Docker 正在运行。

3.1 获取 GitLab Runner Docker 镜像

首先,你需要从 Docker Hub 获取 GitLab Runner 的 Docker 镜像。打开命令提示符或 PowerShell 并运行以下命令:

docker pull gitlab/gitlab-runner:latest

这将下载最新版本的 GitLab Runner Docker 镜像。

3.2 启动 GitLab Runner 容器

接下来,需要创建并启动一个 GitLab Runner 容器。你可以通过以下命令来实现:

docker run -d --name gitlab-runner --restart always \-v /var/run/docker.sock:/var/run/docker.sock \-v /srv/gitlab-runner/config:/etc/gitlab-runner \gitlab/gitlab-runner:latest

该命令做了下面几件事情:

  1. -d 使容器在后台运行。
  2. --name gitlab-runner 给容器命名为 gitlab-runner。
  3. --restart always 确保容器在退出时自动重启。
  4. -v /var/run/docker.sock:/var/run/docker.sock
    允许 GitLab Runner 容器内部启动新的 Docker 容器,这对于大多数 CI/CD 任务是必需的。
  5. -v /srv/gitlab-runner/config:/etc/gitlab-runner
    GitLab Runner 的配置文件持久化到宿主机的 /srv/gitlab-runner/config 目录。

注意:Windows 用户可能需要调整卷挂载的路径(/srv/gitlab-runner/config 和 /var/run/docker.sock),确保它们在你的系统上有效。

3.3 注册 GitLab Runner

在容器启动后,你需要注册 GitLab Runner 到你的 GitLab 实例。首先,进入到你的 GitLab Runner 容器:

docker exec -it gitlab-runner bash

然后,运行注册命令:

gitlab-runner register

在注册过程中,你将需要提供:

  • 你的 GitLab 实例的 URL。
  • Runner 的注册令牌,可以在 GitLab 项目的 Settings > CI/CD > Runners 部分找到。
  • Runner 的描述和标签。
  • 执行器类型,对于 Docker,选择 docker。
  • Docker 镜像,例如 ubuntu:latest。

按照提示完成注册过程即可。

3.4 验证 Runner 是否注册成功

注册完成后,你可以在 GitLab 的 Settings > CI/CD > Runners 部分看到你的 Runner。如果 Runner 显示为在线状态,那么你已经成功设置了 GitLab Runner。

3.5 All Down ^_^

注册完成后,你可以输入 exit 命令退出容器。至此,已经成功在 ocker 上安装并配置了 GitLab Runner。后续可以开始使用它来执行 CI/CD 任务了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/706729.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

浅谈 Linux fork 函数

文章目录 前言fork 基本概念代码演示示例1:体会 fork 函数返回值的作用示例2:创建多进程,加深对 fork 函数的理解 前言 本篇介绍 fork 函数。 fork 基本概念 pid_t fork(void) fork 的英文含义是"分叉",在这里就是 …

UE4c++ ConvertActorsToStaticMesh

UE4c ConvertActorsToStaticMesh ConvertActorsToStaticMesh UE4c ConvertActorsToStaticMesh创建Edior模块(最好是放Editor模块毕竟是编辑器代码)创建UBlueprintFunctionLibraryUTestFunctionLibrary.hUTestFunctionLibrary.cpp:.Build.cs 目标:为了大量…

oracle 如何使用脚本实现访问控制(无需额外插件)

随着这些年勒索病毒的爆发,各个企业对数据安全的要求越来越高,常见的办法有开启数据库审计,加数据库防火墙,网络限制等等;但是细粒度审计会消耗大量系统资源,第三方数据库防火墙一般是需要收费的;这里介绍我个人常用的四个db级别trigger,用于记录部分关键信息可以应对部…

【QT+QGIS跨平台编译】之五十一:【QGIS_CORE跨平台编译】—【qgsexpressionparser.cpp生成】

文章目录 一、Bison二、生成来源三、构建过程一、Bison GNU Bison 是一个通用的解析器生成器,它可以将注释的无上下文语法转换为使用 LALR (1) 解析表的确定性 LR 或广义 LR (GLR) 解析器。Bison 还可以生成 IELR (1) 或规范 LR (1) 解析表。一旦您熟练使用 Bison,您可以使用…

通过redfish协议实现服务器固件升级、从虚拟光驱启动自检盘并等待完成,最后截图保存

通过redfish协议实现服务器固件升级、从虚拟光驱启动自检盘并等待完成,最后截图保存 版本信息代码 新开发的PCIE设备在做服务器适配时,有时需要服务器厂家更新BMC或BIOS固件。同时,我们也希望对PCIE设备做一些检测,最后收集一些信息存档。如果需要处理的服务器很多,通过BMC的界…

【严格递增】2972统计移除递增子数组的数目 II

作者推荐 动态规划的时间复杂度优化 本文涉及知识点 严格递增 子数组 LeetCode2972. 统计移除递增子数组的数目 II 给你一个下标从 0 开始的 正 整数数组 nums 。 如果 nums 的一个子数组满足:移除这个子数组后剩余元素 严格递增 ,那么我们称这个子…

Vue+SpringBoot打造天然气工程业务管理系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块三、使用角色3.1 施工人员3.2 管理员 四、数据库设计4.1 用户表4.2 分公司表4.3 角色表4.4 数据字典表4.5 工程项目表4.6 使用材料表4.7 使用材料领用表4.8 整体E-R图 五、系统展示六、核心代码6.1 查询工程项目6.2 工程物资…

Qt RGB三色灯上位机

今天突发奇想做一个Qt RGB三色灯上位机,刚好手上有一个RGB三色灯和arduion开发板。 我是想实现一个颜色选择器界面然后鼠标点击颜色区域就可以发出rgb的值,然后把这个值通过串口线发送给arduion,arduion再解析出数据发送给RGB三色灯。 实现界面如下&…

express+mysql+vue,从零搭建一个商城管理系统3--user路由模块

提示:学习express,搭建管理系统 文章目录 前言一、新建routes文件夹二、新建routes/index.js和routes/user.js三、修改index.js四、修改routes/index.js五、修改routes/user.js六、启动项目预览总结 前言 需求:主要学习express,所…

maven的私服

什么是maven的私服就是把自己写的工具类共享给别人这样大家都能用到你写的工具类不用重复写提示效率 maven的上传与下载示意图 1.什么是发行版本?发行版本指定的是功能稳定可以共大家使用的版本 2.什么是快照版本?快照版本指定的是指正在开发的版本 3…

java解决统计有序矩阵中的负数

java解决统计有序矩阵中的负数 01 题目 给你一个 m * n 的矩阵 grid,矩阵中的元素无论是按行还是按列,都以非严格递减顺序排列。 请你统计并返回 grid 中 负数 的数目。 示例 1: 输入:grid [[4,3,2,-1],[3,2,1,-1],[1,1,-1,-2],…

[java] 23种设计模式之适配器模式

适配器模式将某个类的接口转换成客户端期望的另一个接口表示,目的是消除由于接口不匹配所造成的类的兼容性问题。主要分为三类:类的适配器模式、对象的适配器模式、接口的适配器模式。首先,我们来看看类的适配器模式 1.1 类的适配器模式 核…

LeetCode刷题笔记之回溯算法(二)

一、排列问题 排列是有序的&#xff0c;即{1&#xff0c;2}与{2&#xff0c;1}是两个排序。 1. 46【全排列】 题目&#xff1a; 给定一个不含重复数字的数组 nums &#xff0c;返回其所有可能的全排列。你可以按任意顺序返回答案。代码&#xff1a; class Solution {List<…

ChatGPT 正测试Android屏幕小组件;联想ThinkBook 推出透明笔记本电脑

▶ ChatGPT 测试屏幕小组件 近日 ChatGPT 正在测试 Android 平台上的屏幕小组件&#xff0c;类似于手机中的悬浮窗&#xff0c;按住 Android 手机主屏幕上的空白位置就可以调出 ChatGPT 的部件菜单。 菜单中提供了许多选项&#xff0c;包括文本、语音和视频查询的快捷方式&…

第102讲:MySQL多实例与Mycat分布式读写分离的架构实践

文章目录 1.Mycat读写分离分布式架构规划2.在两台服务器中搭建八个MySQL实例2.1.安装MySQL软件2.2.创建每个MySQL实例的数据目录并初始化2.3.准备每个实例的配置文件2.4.准备每个实例的启动脚本2.6启动每台机器的MySQL多实例2.7.为每个MySQL实例设置密码2.8.查看每个MySQL实例的…

蓝桥杯第十四届电子类单片机组决赛程序设计

目录 前言 单片机资源数据包_2023&#xff08;点击下载&#xff09; 一、第十四届比赛题目 1.比赛题目 2.题目解读 1&#xff09;任务要求 2&#xff09;注意事项 二、显示功能实现 1.关于高位为0时数码管熄灭功能的实现 2.关于显示小数位的处理 3.关于“校准值”的…

Nginx反向代理ip透传与负载均衡

前言 上篇介绍了nginx服务器单向代理和动静分离等相关内容&#xff0c;可参考Nginx重写功能和反向代理-CSDN博客&#xff0c;这里就ip透传和负载均衡对nginx反向代理做进一步了解。 目录 一、客户端ip透传 1. 概述 2. 一级代理 2.1 图示 2.2 操作过程 3. 二级代理 3.…

使用ffmpeg压缩视频

一、到ffmpeg官网下载文件包&#xff1a; Download FFmpeg 下载后找到 bin 下的3个exe文件&#xff0c;复制到自己本机的某个目录下, 如&#xff1a; 二、使用命令行压缩&#xff1a; ffmpeg -i input.mp4 -c:v libx265 -crf 28 -y output.mp4 这条命令使用 FFmpeg 工具对输…

机器学习——线性代数中矩阵和向量的基本介绍

矩阵和向量的基本概念 矩阵的基本概念&#xff08;这里不多说&#xff0c;应该都知道&#xff09; 而向量就是一个特殊的矩阵&#xff0c;即向量只有一列&#xff0c;是个n*1的矩阵 注&#xff1a;一般矩阵用大写字母表示&#xff0c;向量用小写字母表示 矩阵的加减运算 两个…

大语言模型LLM推理加速主流框架(LLM系列10)

文章目录 大语言模型LLM推理加速主流框架&#xff08;LLM系列10&#xff09;引言大语言模型推理基础LLM推理加速的主要途径模型优化技术硬件加速软件层面优化 主流LLM推理框架集成概述TensorRT-LLMPyTorch/TensorFlow Serving其他框架与工具 实例分析与应用案例** 大语言模型LL…