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

【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 提供了多种执行器类型,每种类型适用于不同的场景。

常见的执行器类型

  1. Shell

    • 描述:直接在 Runner 所在的主机上执行命令。
    • 适用场景:适用于简单的脚本和命令,不需要复杂的隔离环境。
    • 配置示例
      sudo gitlab-runner register -n \--url https://gitlab.example.com/ \--registration-token REGISTRATION_TOKEN \--executor shell \--description "My Shell Runner"
  2. 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
  3. 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
  4. 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
  5. 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

解释

  1. 全局配置

    • default 块定义了默认的 Docker 镜像和 before_script
    • stages 定义了 CI/CD 流水线的阶段。
  2. 使用 Docker 执行器的 job

    • build_job 和 deploy_job 使用全局配置的 Docker 执行器。
  3. 使用 Shell 执行器的 job

    • test_job 使用 shell 执行器。
    • before_script: [] 清除了全局的 before_script,以避免不必要的命令执行。
    • tags: ["shell"] 指定了该 job 应该在带有 shell 标签的 Runner 上运行。确保您有一个带有 shell 标签的 Runner 配置。

配置 Runner

确保您有一个带有 shell 标签的 Runner 配置。您可以在 GitLab 的 Runner 设置中添加一个 Shell 执行器类型的 Runner,并为其分配 shell 标签。

  1. 注册 Shell Runner

    • 下载并安装 GitLab Runner。
    • 注册一个新的 Runner,并选择 shell 作为执行器类型:
      sudo gitlab-runner register
    • 按照提示输入必要的信息,包括 shell 作为执行器类型。
    • 为 Runner 分配 shell 标签:
      sudo gitlab-runner tag <runner_id> shell
  2. 验证 Runner

    • 确保 Runner 已经成功注册并在线。
    • 检查 Runner 的标签是否正确设置。

通过以上步骤,您可以在 .gitlab-ci.yml 文件中指定某个 job 使用 shell 执行器,而其他 job 继续使用全局配置的 docker 执行器。

http://www.lryc.cn/news/484783.html

相关文章:

  • 实用教程:如何无损修改MP4视频时长
  • mysqldump命令搭配source命令完成数据库迁移备份
  • 生信:TCGA学习(R、RStudio安装与下载、常用语法与常用快捷键)
  • 十三、注解配置SpringMVC
  • 为什么海外服务器IP会被封
  • 图像处理技术椒盐噪声
  • [笔记]L6599的极限工作条件考量
  • 机器学习基础04
  • Ubuntu 20.04 配置开发环境(持续更新)
  • Rocky9/Ubuntu使用pip安装python的库mysqlclient失败解决方式
  • 探索 HTML 和 CSS 实现的 3D旋转相册
  • OpenJudge_ 简单英文题_04:0/1 Knapsack
  • 深入探索离散 Hopfield 神经网络
  • [智能车摄像头是一种安装在汽车上用于辅助驾驶和提高安全性的重要设备]
  • 前端vue 列表中回显并下拉选择修改标签
  • hbase未来的发展趋势
  • Rust 语言学习笔记(二)
  • 【postman】怎么通过curl看请求报什么错
  • Python 编程入门指南(一)
  • macOS 设置固定IP
  • redis实现消息队列的几种方式
  • debian 系统更新升级
  • STM32学习笔记-----UART的概念
  • Pytest-Bdd-Playwright 系列教程(9):datatable 参数的使用
  • 【408】SDN重点笔记
  • 云运维基础
  • 基于微信小程序的平安驾校预约平台的设计与实现(源码+LW++远程调试+代码讲解等)
  • Rust开发一个命令行工具(一,简单版持续更新)
  • 实战:深入探讨 MySQL 和 SQL Server 全文索引的使用及其弊端
  • 情景2 虚拟化世界 自己答案的理解