CI/CD:安装配置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. 概述
- 2. Runner 类型和特性
- 2.1 Runner 类型
- 2.1.1 执行器
- Shell
- Docker 与 Docker Machine
- Kubernetes
- SSH
- VirtualBox
- 自定义执行器
- 2.1.2 资源管理
- Shared Runner
- Specific Runner
- 2.2 Runner 特性
- 3. 安装和配置 GitLab Runner
1. 概述 1.1 什么是 GitLab Runner?
GitLab Runner 是 GitLab 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 类型 2.1.1 执行器GitLab Runner 支持多种类型的执行器,这些执行器决定了 Runner 在哪种环境下执行 CI/CD 作业。每种执行器都有其特定的使用场景和功能。以下是 GitLab Runner 支持的主要执行器类型。
Shell
Shell 执行器在一个新的 shell 进程中执行作业。这意味着它可以在几乎任何能运行 bash 或 PowerShell 的系统上工作。Shell 执行器适用于简单的脚本或当你需要直接访问运行机器时。
Docker 与 Docker Machine
Docker 执行器在 Docker 容器中执行作业。这提供了一个干净、隔离的环境,适用于需要依赖特定版本的工具或库的构建。Docker 执行器是最受欢迎的选择之一,因为它提供了良好的环境隔离和易于配置的特性。
Docker Machine 执行器是 Docker 执行器的扩展,它可以动态创建和管理 Docker 主机。这对于需要根据负载动态扩展 Runner 能力的场景非常有用。
Kubernetes
Kubernetes 执行器在 Kubernetes 集群中执行作业。这允许作业以容器的形式运行,并利用 Kubernetes 的强大功能,如自动扩缩容、服务发现和负载均衡。适用于已经使用 Kubernetes 的团队。
SSH
SSH 执行器通过 SSH 连接到远程服务器,并在那里执行作业。这适用于需要在特定的、预配置的环境中运行作业的场景。
VirtualBox
VirtualBox 执行器在 VirtualBox 虚拟机中执行作业。这允许在完全隔离的环境中运行作业,适用于需要特定操作系统环境的构建。
自定义执行器
Custom 执行器允许开发者自定义执行器。如果现有的执行器不满足特定需求,可以通过编写自定义脚本来创建一个执行器。
每种类型的 Runner 都有其独特的优势和适用场景。选择哪种类型的 Runner 取决于项目的具体需求、预算、以及团队对于 CI/CD 环境的控制需求。
在 GitLab Runner 中,从资源管理和项目需求的角度看,有两种常见的类型:Shared Runner 和 Specific Runner。它们各自适用于不同的场景和需求。
Shared Runner
Shared Runner 是一种全局性质的 Runner,它被配置为可供多个项目共享使用。这意味着同一个 Shared Runner 可以被多个项目同时利用。Shared Runner 通常适用于简单的 CI/CD 流程,其中的作业比较标准化,不需要针对特定项目进行定制。通过共享 Runner,团队可以更好地利用资源,减少重复配置的工作,并且能够更方便地管理和维护 Runner。
Specific 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 支持多种执行器,包括 Shell、Docker、Kubernetes、SSH 等。这意味着你可以根据项目的需求选择合适的执行环境。例如,对于容器化的应用程序,你可以选择 Docker 执行器来在容器中执行作业,而对于需要在 Kubernetes 集群中运行的作业,你可以选择 Kubernetes 执行器。
其次,GitLab Runner 支持配置不同标签的 Runner。通过为 Runner 分配标签,你可以灵活地将 Runner 分配给不同的作业或项目。这样一来,你可以根据作业的特点和需求,将特定的 Runner 分配给相应的作业,从而实现作业的定制化执行。
另外,GitLab Runner 还支持一系列高级功能,如缓存、并发、重试等。
- 缓存功能可以在作业执行过程中缓存依赖项,从而加速后续的作业执行速度。
- 并发功能允许同时执行多个作业,提高了整体的 CI/CD 效率。
- 重试功能可以在作业执行失败时自动进行重试,提高了系统的稳定性和可靠性。
这些功能的结合使用,可以有效地提高 CI/CD 流程的效率和稳定性,使团队能够更快速、更可靠地交付软件。
3. 安装和配置 GitLab Runner你可以遵循以下步骤安装和配置 GitLab Runne。
3.1 获取 GitLab Runner Docker 镜像注:下面的介绍假设你已经安装了 Docker 或桌面版的 Docker Desktop 并且 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
该命令做了下面几件事情:
-d使容器在后台运行。--name gitlab-runner给容器命名为 gitlab-runner。--restart always确保容器在退出时自动重启。-v /var/run/docker.sock:/var/run/docker.sock
允许 GitLab Runner 容器内部启动新的 Docker 容器,这对于大多数 CI/CD 任务是必需的。-v /srv/gitlab-runner/config:/etc/gitlab-runner
将 GitLab Runner 的配置文件持久化到宿主机的 /srv/gitlab-runner/config 目录。
3.3 注册 GitLab Runner注意:Windows 用户可能需要调整卷挂载的路径(/srv/gitlab-runner/config 和 /var/run/docker.sock),确保它们在你的系统上有效。
在容器启动后,你需要注册 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 任务了。
相关文章:
CI/CD:安装配置Gitlab Runner
CI/CD笔记 安装配置Gitlab Runner - 文章信息 - Author: 李俊才 (jcLee95) Visit me at: https://jclee95.blog.csdn.netEmail: 291148484163.com. Shenzhen ChinaAddress of this article:https://blog.csdn.net/qq_28550263/article/details/136296840 Address of this art…...
【Spring连载】使用Spring Data访问 MongoDB----对象映射之JSON Schema
【Spring连载】使用Spring Data访问 MongoDB----对象映射之JSON Schema 一、生成Schema二、加密字段三、JSON Schema类型 从3.6版本开始,MongoDB支持根据提供的 JSON Schema验证documents的集合。在创建集合时,可以定义schema本身以及验证操作和级别&…...
用于游戏开发的顶级 PYTHON 框架
一、说明 我们试图用python开发游戏,一旦产生这个念头,就伴随这样一个问题:当今用于构建游戏的领先 Python 框架有哪些?python下,支持游戏开发平台有哪些优势?我们在这篇博文中告诉你。 二、高级游戏平台简…...
【MongoDB】docker安装mongodb 7.0
下载镜像 docker pull mongo创建本地数据存储文件夹 rootxrx:~/etc# tree mongodb/ mongodb/ └── data使用docker创建容器,并挂载配置文件,并设置密码 docker run -p 5233:27017 -v /root/etc/mongodb/data:/data/db --name mongo -e MONGO_INITDB_ROOT_USERNAMEroot -…...
win10安全中心误删文件怎么办?解析恢复与预防策略
在使用Windows 10的过程中,许多用户依赖于其内置的安全中心来保护电脑免受恶意软件的侵害。然而,有时安全中心的误判可能导致重要文件被错误地删除。当面对这种情况时,了解如何恢复误删的文件并掌握预防措施显得尤为重要。本文将为您详细解析…...
如何锁定MYSQL内存在物理内存里?
MYSQL 8.0 这个参数是 OFF 这个参数是啥意思呢? 按英文单词理解是 锁定在内存意思.突然想起来是因为 周报巡检时主库有使用SWAP内存 而从库却使用更多 使用脚本查看SWAP 进程排序 for i in cd /proc;ls |grep "^[0-9]"|awk $0 >100 ;do awk /Swap:/{aa$2} EN…...
vue菜单栏跳转方案
vue菜单栏跳转方案 <template><div><el-container style"height: 100vh"><el-aside width"200px" style"background-color: #b3c0d1"><el-menuopen"handleOpen"close"handleClose"select"h…...
科技企业如何做到FTP数据安全保护
在数字化浪潮的推动下,科技企业的数据已成为推动创新、提升效率、增强竞争力的核心资源。数据的重要性不言而喻,它不仅包含了客户信息、市场分析、产品设计等关键信息,更是企业宝贵的资产。然而,随着数据量的激增,数据…...
Ubuntu服务器fail2ban的使用
作用:限制ssh远程登录,防止被人爆破服务器,封禁登录ip 使用lastb命令可查看到登录失败的用户及ip,无时无刻的不在爆破服务器 目录 一、安装fail2ban 二,配置fail2ban封禁ip的规则 1,进入目录并创建ssh…...
全量知识系统问题及SmartChat给出的答复 之10 三套工具之5语法解析器之3
Q27. 从前面可以看出,IPP解析器给出两种文法规则,一种是人工的(文字处理和文本理解),一种是机器的(图形算法和图像处理)。前者可以是一套文写文章的注释工具的底层,可以使用颜色来着…...
【leetcode】环形链表✚环形链表II
大家好,我是苏貝,本篇博客带大家刷题,如果你觉得我写的还不错的话,可以给我一个赞👍吗,感谢❤️ 目录 1.环形链表解题拓展: 2.环形链表II 1.环形链表 点击查看题目 解题 思路: bool hasCycle…...
SparkStreaming在实时处理的两个场景示例
简介 Spark Streaming是Apache Spark生态系统中的一个组件,用于实时流式数据处理。它提供了类似于Spark的API,使开发者可以使用相似的编程模型来处理实时数据流。 Spark Streaming的工作原理是将连续的数据流划分成小的批次,并将每个批次作…...
02点亮一个LED
书接上回 上回讲到创建一个示例工程 今天讲如何实现LED的点亮 点亮一个led 所需代码 参考来源网络 延时函数参考: Delay.c #include "stm32f10x.h"/*** brief 微秒级延时* param xus 延时时长,范围:0~233015* retval 无*/ vo…...
【代码分享】
//插入排序 void lnsertionSort(int a[], int n) { int end 0; int tmp 0; int i 0; for (i 0;i < n - 1; i) { end i; tmp a[end 1]; while (end > 0) { if (a[end] > tmp) { a[end 1] a[end]; end–; } else { break; } } a[end 1] tmp; } } //希尔排序…...
windows 使用ffmpeg .a静态库:读取Wav音频并保存PCM
ffmpeg读取Wav音频并保存PCM(源代码保存成 c 文件): // test_ffmpeg.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。 ////#include <iostream>#include <libavcodec/avcodec.h> #include <libavform…...
Docker部署ZooKeeper
在分布式系统中,ZooKeeper是一个关键的组件,用于协调和管理多个节点之间的状态。本文将详细介绍如何使用Docker安装和部署ZooKeeper,包括非集群部署和集群部署两种情况。 非集群部署 前期准备 在开始之前,请确保你已经安装了Docker,并且拥有sudo权限。 关闭防火墙和SEL…...
在PyCharm中使用Git
安装Git CMD检查Git版本 打开cmd,输入git version,检查当前下载版本 配置git的user信息 在cmd中输入 git config --global user.name "用户名"git config --global user.email "用户邮箱"输入:git config --list&…...
【JavaSE】 P165 ~ P194 抽象方法,抽象类,接口,接口内容,多接口实现和父类继承,多态,向上转型,向下转型
目录 抽象抽象的概念抽象方法和抽象类的格式抽象方法和抽象类的使用抽象方法和抽象类的注意事项● 练习1. 写一个父类图形类,其中有方法,功能计算面积为抽象方法。2. 抽象类继承。判断对错,没错的分析运行结果3. 发红包,群内用户类作为父类,有…...
LeetCode: 数组中的第K个最大元素
问题描述 在未排序的数组中找到第k个最大的元素。请注意,你需要找的是数组排序后的第k个最大的元素,而不是第k个不同的元素。 解题思路 解决这个问题有多种方法,下面是几种常见的解题策略: 排序后选择: 将数组排序,…...
亚马逊自养号测评:如何安全搭建环境,有效规避风险
要在亚马逊上进行自养号测评,构建一个真实的国外环境至关重要。这包括模拟国外的服务器、IP地址、浏览器环境,甚至支付方式,以创建一个完整的国际操作环境。这样的环境能让我们自由注册、养号并下单,确保所有操作均符合国际规范。…...
Ubuntu桌面应用开机自启动终极指南:从.desktop配置到环境变量设置
Ubuntu桌面应用开机自启动终极指南:从.desktop配置到环境变量设置 在Ubuntu桌面环境中,让应用程序随系统启动自动运行是提升工作效率的常见需求。无论是开发工具、监控程序还是日常生产力软件,合理的自启动配置都能让我们省去每次手动打开的麻…...
深蓝词库转换器:打破输入法壁垒的终极解决方案
深蓝词库转换器:打破输入法壁垒的终极解决方案 【免费下载链接】imewlconverter ”深蓝词库转换“ 一款开源免费的输入法词库转换程序 项目地址: https://gitcode.com/gh_mirrors/im/imewlconverter 你是否曾因更换输入法而不得不放弃多年积累的个人词库&…...
WorkshopDL:5分钟掌握跨平台Steam创意工坊模组下载的终极方案
WorkshopDL:5分钟掌握跨平台Steam创意工坊模组下载的终极方案 【免费下载链接】WorkshopDL WorkshopDL - The Best Steam Workshop Downloader 项目地址: https://gitcode.com/gh_mirrors/wo/WorkshopDL 你是否在Epic Games Store或GOG平台购买了游戏&#x…...
SAP Fiori开发避坑指南:OData V2和V4到底怎么选?从项目实战角度聊聊
SAP Fiori开发实战:OData V2与V4选型决策框架 当技术评审会的投影仪亮起,会议室里十几位开发骨干的目光聚焦在PPT最后一页的决策点上——这个即将投入千万预算的S/4HANA转型项目,究竟该采用OData V2还是V4作为服务协议?作为经历过…...
使用Docker Compose V2快速部署Nextcloud私有云盘
1. 为什么选择Docker Compose V2部署Nextcloud 在开始之前,我们先聊聊为什么现在推荐使用Docker Compose V2来部署Nextcloud。Docker Compose V2是Docker官方在2021年推出的新一代编排工具,相比老旧的V1版本,它有几个明显的优势: …...
AIAgent从POC到规模化落地的最大陷阱:未做成本敏感性建模就选型——用Monte Carlo仿真预判3种架构路径的3年TCO差异
第一章:AIAgent从POC到规模化落地的最大陷阱:未做成本敏感性建模就选型 2026奇点智能技术大会(https://ml-summit.org) 许多团队在AI Agent项目中,将80%精力投入功能验证与流程编排,却忽略了一个决定性变量:单位请求…...
AUTOSAR开发避坑指南:DBC/CDD文件导入的5个常见错误及解决方法
AUTOSAR开发避坑指南:DBC/CDD文件导入的5个常见错误及解决方法 在AUTOSAR开发流程中,DBC和CDD文件的导入环节往往是工程师们最容易踩坑的技术雷区。这个看似标准化的操作,却因为工具链差异、协议栈复杂性以及配置项的隐蔽性,成为项…...
如何为Tape实现自定义Converter:Moshi和Gson集成完全指南
如何为Tape实现自定义Converter:Moshi和Gson集成完全指南 【免费下载链接】tape A lightning fast, transactional, file-based FIFO for Android and Java. 项目地址: https://gitcode.com/gh_mirrors/tape1/tape Tape是一个闪电般快速、支持事务的基于文件…...
SOONet开源大模型部署:支持Kubernetes编排,水平扩展视频处理吞吐
SOONet开源大模型部署:支持Kubernetes编排,水平扩展视频处理吞吐 1. 项目概述 SOONet是一个基于自然语言输入的长视频时序片段定位系统,它能够通过一次网络前向计算就精确定位视频中的相关片段。想象一下,你有一个小时的视频&am…...
Wan2.2-I2V-A14B部署教程:Windows WSL2环境下运行RTX 4090D镜像方案
Wan2.2-I2V-A14B部署教程:Windows WSL2环境下运行RTX 4090D镜像方案 1. 环境准备与快速部署 在开始之前,请确保你的Windows系统满足以下硬件要求: 显卡:RTX 4090D 24GB显存CPU:10核或更高内存:120GB或更…...
