当前位置: 首页 > news >正文

CI/CD:安装配置Gitlab Runner

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 上执行自动化构建、测试和部署任务。

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 类型

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 环境的控制需求。

2.1.2 资源管理

GitLab Runner 中,从资源管理和项目需求的角度看,有两种常见的类型:Shared RunnerSpecific 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 支持多种执行器,包括 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 任务了。

相关文章:

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数据安全保护

在数字化浪潮的推动下&#xff0c;科技企业的数据已成为推动创新、提升效率、增强竞争力的核心资源。数据的重要性不言而喻&#xff0c;它不仅包含了客户信息、市场分析、产品设计等关键信息&#xff0c;更是企业宝贵的资产。然而&#xff0c;随着数据量的激增&#xff0c;数据…...

Ubuntu服务器fail2ban的使用

作用&#xff1a;限制ssh远程登录&#xff0c;防止被人爆破服务器&#xff0c;封禁登录ip 使用lastb命令可查看到登录失败的用户及ip&#xff0c;无时无刻的不在爆破服务器 目录 一、安装fail2ban 二&#xff0c;配置fail2ban封禁ip的规则 1&#xff0c;进入目录并创建ssh…...

全量知识系统问题及SmartChat给出的答复 之10 三套工具之5语法解析器之3

Q27. 从前面可以看出&#xff0c;IPP解析器给出两种文法规则&#xff0c;一种是人工的&#xff08;文字处理和文本理解&#xff09;&#xff0c;一种是机器的&#xff08;图形算法和图像处理&#xff09;。前者可以是一套文写文章的注释工具的底层&#xff0c;可以使用颜色来着…...

【leetcode】环形链表✚环形链表II

大家好&#xff0c;我是苏貝&#xff0c;本篇博客带大家刷题&#xff0c;如果你觉得我写的还不错的话&#xff0c;可以给我一个赞&#x1f44d;吗&#xff0c;感谢❤️ 目录 1.环形链表解题拓展&#xff1a; 2.环形链表II 1.环形链表 点击查看题目 解题 思路: bool hasCycle…...

SparkStreaming在实时处理的两个场景示例

简介 Spark Streaming是Apache Spark生态系统中的一个组件&#xff0c;用于实时流式数据处理。它提供了类似于Spark的API&#xff0c;使开发者可以使用相似的编程模型来处理实时数据流。 Spark Streaming的工作原理是将连续的数据流划分成小的批次&#xff0c;并将每个批次作…...

02点亮一个LED

书接上回 上回讲到创建一个示例工程 今天讲如何实现LED的点亮 点亮一个led 所需代码 参考来源网络 延时函数参考&#xff1a; Delay.c #include "stm32f10x.h"/*** brief 微秒级延时* param xus 延时时长&#xff0c;范围&#xff1a;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&#xff08;源代码保存成 c 文件&#xff09;&#xff1a; // 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&#xff0c;输入git version&#xff0c;检查当前下载版本 配置git的user信息 在cmd中输入 git config --global user.name "用户名"git config --global user.email "用户邮箱"输入&#xff1a;git config --list&…...

【JavaSE】 P165 ~ P194 抽象方法,抽象类,接口,接口内容,多接口实现和父类继承,多态,向上转型,向下转型

目录 抽象抽象的概念抽象方法和抽象类的格式抽象方法和抽象类的使用抽象方法和抽象类的注意事项● 练习1. 写一个父类图形类&#xff0c;其中有方法&#xff0c;功能计算面积为抽象方法。2. 抽象类继承。判断对错,没错的分析运行结果3. 发红包,群内用户类作为父类&#xff0c;有…...

LeetCode: 数组中的第K个最大元素

问题描述 在未排序的数组中找到第k个最大的元素。请注意&#xff0c;你需要找的是数组排序后的第k个最大的元素&#xff0c;而不是第k个不同的元素。 解题思路 解决这个问题有多种方法&#xff0c;下面是几种常见的解题策略&#xff1a; 排序后选择: 将数组排序&#xff0c…...

亚马逊自养号测评:如何安全搭建环境,有效规避风险

要在亚马逊上进行自养号测评&#xff0c;构建一个真实的国外环境至关重要。这包括模拟国外的服务器、IP地址、浏览器环境&#xff0c;甚至支付方式&#xff0c;以创建一个完整的国际操作环境。这样的环境能让我们自由注册、养号并下单&#xff0c;确保所有操作均符合国际规范。…...

Python爬虫实战:研究MechanicalSoup库相关技术

一、MechanicalSoup 库概述 1.1 库简介 MechanicalSoup 是一个 Python 库,专为自动化交互网站而设计。它结合了 requests 的 HTTP 请求能力和 BeautifulSoup 的 HTML 解析能力,提供了直观的 API,让我们可以像人类用户一样浏览网页、填写表单和提交请求。 1.2 主要功能特点…...

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型

摘要 拍照搜题系统采用“三层管道&#xff08;多模态 OCR → 语义检索 → 答案渲染&#xff09;、两级检索&#xff08;倒排 BM25 向量 HNSW&#xff09;并以大语言模型兜底”的整体框架&#xff1a; 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后&#xff0c;分别用…...

React Native 开发环境搭建(全平台详解)

React Native 开发环境搭建&#xff08;全平台详解&#xff09; 在开始使用 React Native 开发移动应用之前&#xff0c;正确设置开发环境是至关重要的一步。本文将为你提供一份全面的指南&#xff0c;涵盖 macOS 和 Windows 平台的配置步骤&#xff0c;如何在 Android 和 iOS…...

解决Ubuntu22.04 VMware失败的问题 ubuntu入门之二十八

现象1 打开VMware失败 Ubuntu升级之后打开VMware上报需要安装vmmon和vmnet&#xff0c;点击确认后如下提示 最终上报fail 解决方法 内核升级导致&#xff0c;需要在新内核下重新下载编译安装 查看版本 $ vmware -v VMware Workstation 17.5.1 build-23298084$ lsb_release…...

UE5 学习系列(三)创建和移动物体

这篇博客是该系列的第三篇&#xff0c;是在之前两篇博客的基础上展开&#xff0c;主要介绍如何在操作界面中创建和拖动物体&#xff0c;这篇博客跟随的视频链接如下&#xff1a; B 站视频&#xff1a;s03-创建和移动物体 如果你不打算开之前的博客并且对UE5 比较熟的话按照以…...

el-switch文字内置

el-switch文字内置 效果 vue <div style"color:#ffffff;font-size:14px;float:left;margin-bottom:5px;margin-right:5px;">自动加载</div> <el-switch v-model"value" active-color"#3E99FB" inactive-color"#DCDFE6"…...

《通信之道——从微积分到 5G》读书总结

第1章 绪 论 1.1 这是一本什么样的书 通信技术&#xff0c;说到底就是数学。 那些最基础、最本质的部分。 1.2 什么是通信 通信 发送方 接收方 承载信息的信号 解调出其中承载的信息 信息在发送方那里被加工成信号&#xff08;调制&#xff09; 把信息从信号中抽取出来&am…...

【Go语言基础【13】】函数、闭包、方法

文章目录 零、概述一、函数基础1、函数基础概念2、参数传递机制3、返回值特性3.1. 多返回值3.2. 命名返回值3.3. 错误处理 二、函数类型与高阶函数1. 函数类型定义2. 高阶函数&#xff08;函数作为参数、返回值&#xff09; 三、匿名函数与闭包1. 匿名函数&#xff08;Lambda函…...

深入浅出深度学习基础:从感知机到全连接神经网络的核心原理与应用

文章目录 前言一、感知机 (Perceptron)1.1 基础介绍1.1.1 感知机是什么&#xff1f;1.1.2 感知机的工作原理 1.2 感知机的简单应用&#xff1a;基本逻辑门1.2.1 逻辑与 (Logic AND)1.2.2 逻辑或 (Logic OR)1.2.3 逻辑与非 (Logic NAND) 1.3 感知机的实现1.3.1 简单实现 (基于阈…...

iview框架主题色的应用

1.下载 less要使用3.0.0以下的版本 npm install less2.7.3 npm install less-loader4.0.52./src/config/theme.js文件 module.exports {yellow: {theme-color: #FDCE04},blue: {theme-color: #547CE7} }在sass中使用theme配置的颜色主题&#xff0c;无需引入&#xff0c;直接可…...