CI/CD:安装配置Gitlab Runner

本文涉及的产品
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
简介: CI/CD:安装配置Gitlab Runner

1. 概述

1.1 什么是 GitLab Runner?

GitLab Runner 是 GitLab 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 支持多种执行器,包括 Shell、Docker、Kubernetes、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 任务了。

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
目录
相关文章
|
1月前
|
缓存 监控 数据可视化
利用GitLab CI/CD自动化您的软件开发流程
【10月更文挑战第10天】GitLab CI/CD 是 GitLab 内置的持续集成和持续部署工具,通过编写 .gitlab-ci.yml 文件,可以自动化构建、测试和部署应用程序的过程。本文介绍 GitLab CI/CD 的核心优势、实施步骤及在现代开发中的应用,帮助您提高开发效率和软件质量。
|
1月前
|
jenkins Shell 持续交付
Jenkins持续集成GitLab项目 GitLab提交分支后触发Jenkis任务 持续集成 CI/CD 超级详细 超多图(二)
Jenkins持续集成GitLab项目 GitLab提交分支后触发Jenkis任务 持续集成 CI/CD 超级详细 超多图(二)
67 0
|
2月前
|
Shell Docker 容器
5-17|gitlab的runner什么意思
5-17|gitlab的runner什么意思
|
1月前
|
JavaScript 测试技术 持续交付
使用 GitLab CI/CD 管道自动化部署 Web 应用
【10月更文挑战第2天】使用 GitLab CI/CD 管道自动化部署 Web 应用
40 0
|
1月前
|
jenkins Shell 持续交付
Jenkins持续集成GitLab项目 GitLab提交分支后触发Jenkis任务 持续集成 CI/CD 超级详细 超多图(一)
Jenkins持续集成GitLab项目 GitLab提交分支后触发Jenkis任务 持续集成 CI/CD 超级详细 超多图(一)
136 0
6-14|gitlab的runner的流水线怎么看
6-14|gitlab的runner的流水线怎么看
|
3月前
|
数据可视化 jenkins 测试技术
GitLab CI/CD 和 Jenkins对比
8月更文挑战第25天
354 5
|
3月前
|
Shell Docker 容器
GitlabCI学习笔记之一:安装Gitlab和GitLabRunner
GitlabCI学习笔记之一:安装Gitlab和GitLabRunner
|
3月前
|
数据安全/隐私保护
CI/CD笔记.Gitlab系列.新用户管理
CI/CD笔记.Gitlab系列.新用户管理
39 1
|
2月前
|
Docker 容器
Docker安装Gitlab和Gitlab-Runner并实现项目CICD
Docker安装Gitlab和Gitlab-Runner并实现项目CICD