【CICD】GitLab Runner 和执行器(Executor
GitLab Runner 和执行器(Executor)是 GitLab CI/CD 管道中的两个重要组成部分。理解它们之间的关系有助于更好地配置和使用 CI/CD 流水线。runer是gitlab的ci-agent对接gitlab,而执行器是接受runer下发的ci的任务来干活的。也就是说gitrunner是一个控制端,它负责去和gitlab-ci环境通信,获取任务,然后把这些任务分配给它的执行器来完成任务 Gitlab CI/CD笔记-第三天-使用主机docker in docker 进行构建并push镜像。_gitlab runner docker in docker-CSDN博客
GitLab Runner
GitLab Runner 是 GitLab CI/CD 的客户端,负责执行 CI/CD 作业(jobs)。Runner 从 GitLab 服务器接收作业,并在指定的环境中运行这些作业。Runner 可以安装在多种平台上,包括 Linux、Windows、macOS 等。
执行器(Executor)
执行器(Executor) 是 GitLab Runner 的一部分,决定了 Runner 如何执行作业。不同的执行器类型提供了不同的执行环境和功能。GitLab 提供了多种执行器类型,每种类型适用于不同的场景。
常见的执行器类型
-
Shell:
- 描述:直接在 Runner 所在的主机上执行命令。
- 适用场景:适用于简单的脚本和命令,不需要复杂的隔离环境。
- 配置示例:
sudo gitlab-runner register -n \--url https://gitlab.example.com/ \--registration-token REGISTRATION_TOKEN \--executor shell \--description "My Shell Runner"
-
Docker:
- 描述:使用 Docker 容器来执行作业。每个作业都在一个新的容器中运行。
- 适用场景:适用于需要隔离环境的作业,可以轻松地切换不同的运行环境。
- 配置示例: 如果gitrunner是直接安装在主机上的,那么gitrunner没执行一个job会在主机上启动一个docker容器来执行。
sudo gitlab-runner register -n \--url https://gitlab.example.com/ \--registration-token REGISTRATION_TOKEN \--executor docker \--description "My Docker Runner" \--docker-image alpine:latest
-
Docker+Machine:
- 描述:结合了 Docker 和 Docker Machine,可以在需要时动态创建新的 Docker 主机。
- 适用场景:适用于大规模的 CI/CD 管道,需要动态扩展资源。
- 配置示例:
sudo gitlab-runner register -n \--url https://gitlab.example.com/ \--registration-token REGISTRATION_TOKEN \--executor docker+machine \--description "My Docker+Machine Runner" \--docker-machine-name my-docker-machine-$RUNNER_NUM \--docker-image alpine:latest
-
Kubernetes:
- 描述:在 Kubernetes 集群中执行作业。每个作业都在一个新的 Pod 中运行。
- 适用场景:适用于需要在 Kubernetes 集群中运行的作业。
- 配置示例:
sudo gitlab-runner register -n \--url https://gitlab.example.com/ \--registration-token REGISTRATION_TOKEN \--executor kubernetes \--description "My Kubernetes Runner" \--kubernetes-namespace default
-
Parallel:
- 描述:允许多个作业并行执行。
- 适用场景:适用于需要并行执行多个任务的场景。
- 配置示例:
sudo gitlab-runner register -n \--url https://gitlab.example.com/ \--registration-token REGISTRATION_TOKEN \--executor parallel \--description "My Parallel Runner" \--parallel-commands 4
在 .gitlab-ci.yml 中指定执行器
虽然 .gitlab-ci.yml 文件中的 default 块可以定义全局的执行器类型,但您也可以在特定的 job 中覆盖这些设置。
示例配置
# 全局配置
default:image: alpine:latestbefore_script:- echo "Running in Docker"stages:- build- test- deploy# 使用 Docker 执行器的 job
build_job:stage: buildscript:- echo "Building the application"- apk add --no-cache build-base- make build# 使用 Shell 执行器的 job
test_job:stage: testscript:- echo "Running tests"- ./run_tests.shbefore_script: [] # 清除全局的 before_scripttags:- shell# 使用 Docker 执行器的 job
deploy_job:stage: deployscript:- echo "Deploying the application"- ./deploy.sh
解释
-
全局配置:
default块定义了默认的 Docker 镜像和before_script。stages定义了 CI/CD 流水线的阶段。
-
使用 Docker 执行器的 job:
build_job和deploy_job使用全局配置的 Docker 执行器。
-
使用 Shell 执行器的 job:
test_job使用shell执行器。before_script: []清除了全局的before_script,以避免不必要的命令执行。tags: ["shell"]指定了该 job 应该在带有shell标签的 Runner 上运行。确保您有一个带有shell标签的 Runner 配置。
配置 Runner
确保您有一个带有 shell 标签的 Runner 配置。您可以在 GitLab 的 Runner 设置中添加一个 Shell 执行器类型的 Runner,并为其分配 shell 标签。
-
注册 Shell Runner:
- 下载并安装 GitLab Runner。
- 注册一个新的 Runner,并选择
shell作为执行器类型:sudo gitlab-runner register - 按照提示输入必要的信息,包括
shell作为执行器类型。 - 为 Runner 分配
shell标签:sudo gitlab-runner tag <runner_id> shell
-
验证 Runner:
- 确保 Runner 已经成功注册并在线。
- 检查 Runner 的标签是否正确设置。
通过以上步骤,您可以在 .gitlab-ci.yml 文件中指定某个 job 使用 shell 执行器,而其他 job 继续使用全局配置的 docker 执行器。
相关文章:
【CICD】GitLab Runner 和执行器(Executor
GitLab Runner 和执行器(Executor)是 GitLab CI/CD 管道中的两个重要组成部分。理解它们之间的关系有助于更好地配置和使用 CI/CD 流水线。runer是gitlab的ci-agent对接gitlab,而执行器是接受runer下发的ci的任务来干活的。也就是说gitrunner…...
实用教程:如何无损修改MP4视频时长
如何在UltraEdit中搜索MP4文件中的“mvhd”关键字 引言 在视频编辑和分析领域,有时我们需要深入到视频文件的底层结构中去。UltraEdit(UE)和UEStudio作为强大的文本编辑器,允许我们以十六进制模式打开和搜索MP4文件。本文将指导…...
mysqldump命令搭配source命令完成数据库迁移备份
mysqldump 命令使用 需保证mysqld在运行中, 这个命令的目的是将数据库导出到文件中,例如 mysqldump -uusername -ppassword database > db.sql 注意该命令不是在MySQL客户端(即MySQL命令行)执行的,而是在系统命…...
生信:TCGA学习(R、RStudio安装与下载、常用语法与常用快捷键)
前置环境 macOS系统,已安装homebrew且会相关命令。 近期在整理草稿区,所以放出该贴。 R语言、RStudio、R包安装 R语言安装 brew install rRStudio安装 官网地址:https://posit.co/download/rstudio-desktop/ R包下载 注意R语言环境自带…...
十三、注解配置SpringMVC
文章目录 1. 创建初始化类,代替web.xml2. 创建SpringConfig配置类,代替spring的配置文件3. 创建WebConfig配置类,代替SpringMVC的配置文件4. 测试功能 1. 创建初始化类,代替web.xml 2. 创建SpringConfig配置类,代替spr…...
为什么海外服务器IP会被封
海外服务器因为免备案而备受用户欢迎,近年来租用海外服务器的用户也越来越多,自然也可能会出现一些问题。 如果服务器IP被封,在该服务器下的所有业务都无法访问,对自己和对用户来说都会有较大的影响。因此,我们应做好相…...
图像处理技术椒盐噪声
椒盐噪声,也称为脉冲噪声,是图像中经常见到的一种噪声。它是一种随机出现的白点或者黑点,可能是亮的区域有黑色像素或是在暗的区域有白色像素(或是两者皆有)。这些白点和黑点会在图像中随机分布,导致图像中…...
[笔记]L6599的极限工作条件考量
0.名词 OTP over tempature protect.OCP over current protectOVP over voltage protectBrownout Protection Undervoltage Protection可能需要考虑hysteresis response.因为要考虑一些高频干扰 1.基本的过流保护逻辑 参考:ST L6599 器件手册 LLC开关电源&#…...
机器学习基础04
目录 1.朴素贝叶斯-分类 1.1贝叶斯分类理论 1.2条件概率 1.3全概率公式 1.4贝叶斯推断 1.5朴素贝叶斯推断 1.6拉普拉斯平滑系数 1.7API 2.决策树-分类 2.1决策树 2.2基于信息增益的决策树建立 2.2.1信息熵 2.2.2信息增益 2.2.3信息增益决策树建立步骤 2.3基于基…...
Ubuntu 20.04 配置开发环境(持续更新)
搜狗输入法不能显示中文 sudo apt install libqt5qml5 libgsettings-qt1 sudo apt install libqt5qml5 libqt5quick5 libqt5quickwidgets5 qml-module-qtquick2 编译环境配置 sudo apt-get update #base tools of ubuntu sudo apt install net-tools gitk tree vim termina…...
Rocky9/Ubuntu使用pip安装python的库mysqlclient失败解决方式
# Rocky9 直接使用pip安装mysqlclient会出现缺少依赖,需要先安装mysql-devel相关依赖。由于rocky9用MariaDB替代了MySQL,所以我们可以通过安装mariadb-devel来安装所需要的依赖。 如果Rocky9已经开启了powertool repo可以直接使用下面命令安装 dnf in…...
探索 HTML 和 CSS 实现的 3D旋转相册
效果演示 这段HTML与CSS代码创建了一个包含10张卡片的3D旋转效果,每张卡片都有自己的边框颜色和图片。通过CSS的3D变换和动画,实现了一个动态的旋转展示效果 HTML <div class"wrapper"><div class"inner" style"-…...
OpenJudge_ 简单英文题_04:0/1 Knapsack
题目 描述 Given the weights and values of N items, put a subset of items into a knapsack of capacity C to get the maximum total value in the knapsack. The total weight of items in the knapsack does not exceed C. 输入 First line: two positive integers N (…...
深入探索离散 Hopfield 神经网络
一、离散 Hopfield 神经网络的起源与发展 离散 Hopfield 神经网络由约翰・霍普菲尔德在 1982 年提出,这一创新性的成果在当时引起了广泛关注,成为早期人工神经网络的重要代表之一。 在那个时期,人工神经网络的发展还处于相对初级的阶段。霍…...
[智能车摄像头是一种安装在汽车上用于辅助驾驶和提高安全性的重要设备]
智能车摄像头是一种安装在汽车上用于辅助驾驶和提高安全性的重要设备。它们通常包括几个不同类型,如前视摄像头、环视摄像头、行车记录仪等。这些摄像头的主要功能有: 前视摄像头(Forward Camera):用于提供驾驶员前方…...
前端vue 列表中回显并下拉选择修改标签
1,vue数据列表中进行回显状态并可以在下拉框中选择修改,效果如下 2,vue 页面关键代码 <el-table-column label"审核" align"center" class-name"small-padding fixed-width" prop"status" >&…...
hbase未来的发展趋势
HBase 作为一个开源的分布式、可伸缩的 NoSQL 数据库,依托于 Hadoop 生态系统,以处理海量结构化数据为优势。随着大数据技术的发展,HBase 的发展趋势主要体现在以下几个方面: 1. 与云计算深度集成 随着企业向云迁移,HBase 也正在越来越多地部署在云环境中。云服务商(如 …...
Rust 语言学习笔记(二)
再继续快速学习一下 Rust 的以下几个知识点,就可以开始着手做点小工具了 基本数据类型复合数据类型基本的流程控制 Rust 设计为有效使用内存考虑的,它提供了非常细力度的数据类型,如整数分为有无符号,宽度从 8 位到 128 位&…...
【postman】怎么通过curl看请求报什么错
获取现成的curl方式: 1,拿别人给的curl 2,手机app界面通过charles抓包,点击接口复制curl 3,浏览器界面-开发者工具-选中接口复制curl 拿到curl之后打开postman,点击import,粘贴curl点击send&am…...
Python 编程入门指南(一)
1. Python 简介 Python是一种广泛使用的高级编程语言,因其简洁的语法和强大的功能而备受欢迎。Python由Guido van Rossum于20世纪90年代初设计,旨在提供易于阅读和编写的代码,适合从初学者到专业开发者的各个水平。它是一种解释型语言,这意味着在编写和执行代码之间不需要…...
《流畅的Python》读书笔记03(补充02): 丰富的序列 - deque高效应对高并发序列处理
Python序列分类体系在高并发数据处理中的选型优化,需要综合考虑序列类型的内存模型、可变性、线程安全性以及操作性能。在高并发场景下,错误的选型可能导致性能瓶颈、数据竞争或内存溢出。以下是基于序列分类体系的详细选型策略与优化建议。 一、序列分类…...
告别硬编码!用Python importlib实现动态插件加载(附完整代码)
告别硬编码!用Python importlib实现动态插件加载(附完整代码) 在构建复杂系统时,插件化架构已成为提升代码灵活性和可扩展性的黄金标准。想象一下,当你的应用需要在不重启服务的情况下动态添加新功能,或者允…...
别再只调图表了!用Vue+Echarts做大屏,这5个布局与性能优化技巧才是关键
VueEcharts大屏实战:从布局到性能优化的进阶指南 当数据可视化大屏成为企业展示核心指标的标准配置,开发者们逐渐从"能实现功能"转向追求"极致体验"。本文将分享五个鲜少被系统总结的实战技巧,这些经验来自多个千万级PV项…...
负载电阻从500Ω到10kΩ:用Multisim深度解读谐振放大器选择性变化的底层逻辑
负载电阻从500Ω到10kΩ:用Multisim深度解读谐振放大器选择性变化的底层逻辑 在电子电路设计中,谐振放大器是一个经典而重要的电路结构。许多工程师和爱好者都能熟练地搭建电路并进行基础测试,但当被问及"为什么负载电阻的变化会影响放大…...
Redis 持久化机制:RDB、AOF 与混合持久化
Redis 持久化机制:RDB、AOF 与混合持久化 面试热度:⭐⭐⭐⭐⭐ 前置知识:Redis 基本数据结构、Linux 进程 fork 概念 📑 目录(点击跳转) 1. 为什么 Redis 需要持久化2. RDB 持久化 2.1 基本原理2.2 RDB 的…...
TVA视觉新范式:工业视觉的百年未有之大变局(4)
重磅预告:本专栏将独家连载系列丛书《智能体视觉技术与应用》部分精华内容,该书是世界首套系统阐述“因式智能体”视觉理论与实践的专著,特邀美国 TypeOne 公司首席科学家、斯坦福大学博士 Bohan 担任技术顾问。Bohan先生师从美国三院院士、“…...
Google Cloud Dataflow 背后的流式处理模型
原文:towardsdatascience.com/the-stream-processing-model-behind-google-cloud-dataflow-0d927c9506a0?sourcecollection_archive---------3-----------------------#2024-04-27 在无界数据处理中的正确性、延迟和成本平衡 https://medium.com/vutrinh274?sour…...
【408高效刷题神器】数据结构核心考点:受限双端队列秒杀法、括号匹配与表达式精妙转换(附解题口诀)
📌 导语 在 408 计算机统考的数据结构科目中,栈和队列(特别是受限双端队列和表达式转换)是选择题的必考重灾区。这类题目如果单纯靠脑补极易出错。本文整理自今日的高效复习笔记,提炼出了一套“降维打击”式的做题方法…...
苹果Siri 2025全面升级:从LLM集成到系统级智能体的技术路径解析
1. 项目概述:一次迟来的“大脑”升级最近,关于苹果Siri将在2025年迎来全面优化的消息,在圈内引发了不小的讨论。作为一名长期关注智能交互领域发展的从业者,我对此并不感到意外,反而觉得这是一次“虽迟但到”的必要手术…...
【2026 最新】Web 安全完整学习指南 红队全套技能栈
0x00 技能栈 依照红队的流程分工,选择适合自己的技能栈发展。 越接近中心的能力点越贴近web技术栈,反之亦然。可以根据自身情况,选择技术栈的发展方向。 0x01 漏洞理解篇(Vulnerability) 1.1 前端 同源策略 & CSP & JOSNP 跨域…...
