GitLab Runner 教程 – wiki词典

GitLab Runner 教程:CI/CD 自动化之旅

GitLab Runner 是 GitLab CI/CD 的核心组件,它负责执行在您的项目中定义的 CI/CD 任务。它作为一个轻量级的独立应用程序,从 GitLab 实例获取 CI/CD 作业,在计算基础设施上运行指定的命令,并将结果报告回 GitLab。这种自动化有助于代码的构建、测试和部署,从而减少手动错误并节省时间。

什么是 GitLab Runner?

GitLab Runner 是运行 CI/CD 任务的轻量级独立应用程序。当您将代码推送到 GitLab 存储库,并且 .gitlab-ci.yml 文件定义了自动化任务时,GitLab 会将这些任务发送给一个可用的 Runner。Runner 随后在底层基础设施上执行这些任务,并将任务状态(成功、失败或取消)发送回 GitLab。

GitLab Runner 的主要特性包括:

  • 并发性: 能够同时运行多个任务。
  • 灵活性: 支持多种执行器,可在不同环境中运行任务。
  • 可伸缩性: 可以配置为自动伸缩,以处理不同的工作负载。
  • 自管理与 GitLab 托管: 您可以使用 GitLab.com 提供的共享 Runner,也可以设置和管理自己的 Runner,以获得对环境的更多控制、访问内部网络和自定义硬件资源。

安装

安装 GitLab Runner 涉及在您选择的基础设施上下载和设置应用程序。安装过程因操作系统或环境而异。GitLab 提供以下安装二进制文件和说明:

  • Linux: 安装通常涉及添加官方 GitLab 存储库并使用 aptyum 等包管理器安装 gitlab-runner 包,或手动安装二进制文件。
  • Windows: 针对 Windows 系统提供了具体的说明。
  • macOS: 提供了 macOS 的安装指南。
  • 容器: GitLab Runner 可以在 Docker 容器中运行,或使用 Helm Chart 或 GitLab 代理部署到 Kubernetes 集群。

为了安全和性能,建议将 GitLab Runner 安装在与 GitLab 实例分开的机器上。

注册

安装后,您需要将 Runner 注册到您的 GitLab 实例。这将建立一个经过身份验证的连接,允许 Runner 获取任务。

注册过程通常包括:

  1. 获取注册令牌: 导航到您的 GitLab 项目、组或实例设置下的 Settings > CI/CD,展开 Runners 部分以找到注册令牌。
  2. 运行注册命令: 在安装了 GitLab Runner 的机器上,执行 sudo gitlab-runner register
  3. 提供详细信息: 该命令将提示您输入:
    • GitLab 实例 URL: 您的 GitLab 实例的 URL(例如,https://gitlab.com/)。
    • 注册令牌: 从 GitLab 获取的令牌。
    • 描述: Runner 的简短描述。
    • 标签: 可选标签(例如,dockerawsprod),用于确定 Runner 可以执行哪些任务。.gitlab-ci.yml 中的任务可以指定标签,以将它们路由到适当的 Runner。
    • 执行器: GitLab Runner 用于执行任务的方法。常见选项包括:
      • shell:直接在主机操作系统的 shell 上执行任务。
      • docker:在 Docker 容器中运行任务,提供隔离的环境。
      • kubernetes:在 Kubernetes 集群上执行任务。
      • 其他执行器包括 virtualboxsshcustom

Runner 可以在注册期间配置不同的访问范围:

  • 实例 Runner: 可用于您的 GitLab 实例上的所有项目。
  • 组 Runner: 可用于特定组及其子组中的所有项目。
  • 项目 Runner:: 仅可用于特定项目。

配置 (config.toml)

GitLab Runner 的配置通过 config.toml 文件进行管理,该文件在安装和注册期间自动生成。此文件允许您为特定 Runner 或所有 Runner 设置各种参数。

常见的配置选项包括:

  • 并发性: 限制 Runner 可以同时执行的任务数量。
  • 缓存设置: 配置缓存以在管道运行之间存储依赖项,这可以显著减少构建时间。
  • 日志级别: 调整 Runner 日志的详细程度。
  • CPU 限制: 设置 CPU 使用限制以防止系统过载。
  • 执行器特定参数: 每个执行器类型(例如,Docker、Kubernetes)在 config.toml 中都有自己的一组可配置选项。

config.toml 文件所做的更改通常会立即生效,无需重新启动 Runner,尤其是在容器化环境中运行时。

CI/CD 管道集成

GitLab Runner 与存储库根目录下的 .gitlab-ci.yml 文件中定义的 GitLab CI/CD 管道无缝集成。

当管道被触发时(例如,通过代码推送),GitLab 会将任务发送给可用的 Runner。Runner 随后执行以下步骤:

  1. 克隆存储库: 获取指定提交或分支的代码。
  2. 准备环境: 根据所选执行器设置任务环境(例如,启动 Docker 容器)。
  3. 执行任务: 运行 .gitlab-ci.yml 中任务的 script 部分定义的命令。
  4. 报告结果: 将任务的状态(成功、失败或取消)发送回 GitLab。

标签在任务路由中起着至关重要的作用。通过在注册期间为 Runner 分配标签并在 .gitlab-ci.yml 文件中引用它们,您可以确保任务在具有所需功能或特定环境的 Runner 上运行。

最佳实践和高级主题

  • 安全注意事项: 尤其是在使用 shell 执行器时,请注意运行任务时的潜在安全隐患,因为任务直接在主机上执行。
  • 自动伸缩: 对于动态工作负载,配置 Runner 以使用 Docker Machine、AWS EC2 或 AWS Fargate 等技术进行自动伸缩。这允许 Runner 根据需求自动启动和停止实例,从而优化成本和性能。
  • 缓存策略:config.toml.gitlab-ci.yml 中实现有效的缓存,以存储依赖项和工件,从而显著加快管道执行速度。
  • 监控: 监控 Runner 的性能和行为,以确保最佳运行并排除故障。
  • 专用与共享 Runner: 虽然共享 Runner 很方便,但专用 Runner 提供更多的控制、更好的性能一致性以及访问内部服务的能力,使其适用于关键项目或特定的基础设施需求。
  • 资源限制:config.toml 中限制 CPU 和内存使用,以防止 Runner 使系统过载。
滚动至顶部