【CICD】GitLab Runner 和执行器(Executor

打印 上一主题 下一主题

主题 1653|帖子 1653|积分 4959

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
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 地点的主机上执行命令。
    • 适用场景:适用于简单的脚本和命令,不需要复杂的隔离情况。
    • 配置示例
      1. sudo gitlab-runner register -n \
      2.   --url https://gitlab.example.com/ \
      3.   --registration-token REGISTRATION_TOKEN \
      4.   --executor shell \
      5.   --description "My Shell Runner"
      复制代码

  • Docker

    • 形貌:使用 Docker 容器来执行作业。每个作业都在一个新的容器中运行。
    • 适用场景:适用于需要隔离情况的作业,可以轻松地切换差别的运行情况。
    • 配置示例:  假如gitrunner是直接安装在主机上的,那么gitrunner没执行一个job会在主机上启动一个docker容器来执行。
      1. sudo gitlab-runner register -n \
      2.   --url https://gitlab.example.com/ \
      3.   --registration-token REGISTRATION_TOKEN \
      4.   --executor docker \
      5.   --description "My Docker Runner" \
      6.   --docker-image alpine:latest
      复制代码

  • Docker+Machine

    • 形貌:结合了 Docker 和 Docker Machine,可以在需要时动态创建新的 Docker 主机。
    • 适用场景:适用于大规模的 CI/CD 管道,需要动态扩展资源。
    • 配置示例
      1. sudo gitlab-runner register -n \
      2.   --url https://gitlab.example.com/ \
      3.   --registration-token REGISTRATION_TOKEN \
      4.   --executor docker+machine \
      5.   --description "My Docker+Machine Runner" \
      6.   --docker-machine-name my-docker-machine-$RUNNER_NUM \
      7.   --docker-image alpine:latest
      复制代码

  • Kubernetes

    • 形貌:在 Kubernetes 集群中执行作业。每个作业都在一个新的 Pod 中运行。
    • 适用场景:适用于需要在 Kubernetes 集群中运行的作业。
    • 配置示例
      1. sudo gitlab-runner register -n \
      2.   --url https://gitlab.example.com/ \
      3.   --registration-token REGISTRATION_TOKEN \
      4.   --executor kubernetes \
      5.   --description "My Kubernetes Runner" \
      6.   --kubernetes-namespace default
      复制代码

  • Parallel

    • 形貌:允许多个作业并行执行。
    • 适用场景:适用于需要并行执行多个使命的场景。
    • 配置示例
      1. sudo gitlab-runner register -n \
      2.   --url https://gitlab.example.com/ \
      3.   --registration-token REGISTRATION_TOKEN \
      4.   --executor parallel \
      5.   --description "My Parallel Runner" \
      6.   --parallel-commands 4
      复制代码

在 .gitlab-ci.yml 中指定执行器

虽然 .gitlab-ci.yml 文件中的 default 块可以界说全局的执行器范例,但您也可以在特定的 job 中覆盖这些设置。
示例配置

  1. # 全局配置
  2. default:
  3.   image: alpine:latest
  4.   before_script:
  5.     - echo "Running in Docker"
  6. stages:
  7.   - build
  8.   - test
  9.   - deploy
  10. # 使用 Docker 执行器的 job
  11. build_job:
  12.   stage: build
  13.   script:
  14.     - echo "Building the application"
  15.     - apk add --no-cache build-base
  16.     - make build
  17. # 使用 Shell 执行器的 job
  18. test_job:
  19.   stage: test
  20.   script:
  21.     - echo "Running tests"
  22.     - ./run_tests.sh
  23.   before_script: []  # 清除全局的 before_script
  24.   tags:
  25.     - shell
  26. # 使用 Docker 执行器的 job
  27. deploy_job:
  28.   stage: deploy
  29.   script:
  30.     - echo "Deploying the application"
  31.     - ./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 作为执行器范例:
      1. sudo gitlab-runner register
      复制代码
    • 按照提示输入必要的信息,包括 shell 作为执行器范例。
    • 为 Runner 分配 shell 标签:
      1. sudo gitlab-runner tag <runner_id> shell
      复制代码

  • 验证 Runner

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

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

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

汕尾海湾

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表