如何配置 GitLab Runner 与 Docker

1. 整体流程

首先,我们来看一下整个配置 GitLab Runner 与 Docker 的流程,可以用表格展示如下:

步骤 描述
1 安装 Docker
2 安装 GitLab Runner
3 注册 GitLab Runner
4 配置 GitLab Runner 与 Docker
5 运行 GitLab CI 作业

2. 每一步详细说明

步骤 1:安装 Docker

首先,你需要安装 Docker,这样 GitLab Runner 就可以在 Docker 容器中运行作业。

# 安装 Docker 命令
sudo apt-get install docker-ce docker-ce-cli containerd.io

步骤 2:安装 GitLab Runner

接下来,安装 GitLab Runner 以便连接到 GitLab 并执行 CI/CD 作业。

# 安装 GitLab Runner 命令
curl -L  | sudo bash
sudo apt-get install gitlab-runner

步骤 3:注册 GitLab Runner

在 GitLab 项目中注册 GitLab Runner,并获取 Runner Token。

# 注册 GitLab Runner 命令
sudo gitlab-runner register

步骤 4:配置 GitLab Runner 与 Docker

配置 GitLab Runner 与 Docker 的连接,确保可以在 Docker 容器中运行作业。

# 配置 GitLab Runner 与 Docker
sudo nano /etc/gitlab-runner/config.toml

config.toml 文件中添加以下配置:

[[runners]]
  name = "Docker Runner"
  url = "
  token = "YOUR_RUNNER_TOKEN"
  executor = "docker"
  [runners.docker]
    tls_verify = false
    image = "docker:latest"
    privileged = true
    disable_entrypoint_overwrite = false
    oom_kill_disable = false
    disable_cache = false
    volumes = ["/cache"]
    pull_policy = "if-not-present"

步骤 5:运行 GitLab CI 作业

最后,可以在 GitLab 项目中创建 .gitlab-ci.yml 文件,并定义作业,然后提交代码触发 CI/CD 流程。

# .gitlab-ci.yml
image: docker:latest

stages:
  - build
  - test

build_job:
  stage: build
  script:
    - echo "Building the project..."

test_job:
  stage: test
  script:
    - echo "Running tests..."

序列图

sequenceDiagram
    participant Developer
    participant GitLab
    Developer->>GitLab: 提交代码
    GitLab->>GitLab: 触发 CI/CD 流程
    GitLab->>Docker Runner: 分配作业
    Docker Runner->>Docker: 创建容器
    Docker->>GitLab: 执行作业

类图

classDiagram
    class Developer {
        - name: string
        - experience: string
        + teach(): void
    }
    class GitLab {
        - url: string
        + triggerCI(): void
    }
    class DockerRunner {
        - name: string
        + executeJob(): void
    }
    Developer --|> GitLab
    GitLab --|> DockerRunner

通过以上步骤和示例代码,你应该能够成功配置 GitLab Runner 与 Docker,并在 GitLab 中实现 CI/CD 流程。祝你顺利!