【DevOps工具篇】Gitlab Runner设置(使用服务器作为Runner)

2020-12-18T13:05:28+08:00 | 5分钟阅读 | 更新于 2020-12-18T13:05:28+08:00

Macro Zhao

【DevOps工具篇】Gitlab Runner设置(使用服务器作为Runner)

@TOC

推荐超级课程:

强烈建议学习本文之前,先阅读学习此篇:

我们通过创建仓库、添加用户、克隆和推送到我们的仓库,对GitLab服务器操作得很熟练。但是,如果我们需要构建项目或运行一些测试,我们就无法做到,因为我们没有任何GitLab Runner服务。 GitLab Runner负责管理项目流水线,而GitLab服务器负责管理仓库、用户和其他配置。

使用服务器作为Runner

创建流水线

让我们继续创建一个仓库,即Build With Lal。 添加仓库后,进入该仓库,然后进入该仓库的构建设置。 在构建下,点击流水线编辑器。点击配置流水线 粘贴以下基本流水线脚本

build:  
  script:  
    - date # 打印当前日期  
    - cat /etc/os-release # 打印Linux的操作系统版本

提交流水线更改后,点击构建下的流水线。 您应该会看到流水线处于待处理状态,并且将永远保持待处理状态,直到有GitLab Runner来接手并处理它。

点击待处理状态按钮,然后在下一个屏幕上点击构建按钮,您应该会看到这样的消息。 这个任务无法进行,因为您没有任何可以运行
此任务的活跃运行器。转到项目CI设置 这条消息清楚地说明您没有任何活跃的运行器。所以这里我们得到了一个提示,我们需要一些运行器来实际运行我们的流水线。 如果您点击消息中提到的CI设置,它将重定向您到项目运行器页面,该页面看起来像这样。

更新 Docker Compose 文件

现在,在注册 GitLab Runner 之前,我们需要对我们的 docker-compose.yml 文件进行一些小的更新。在添加了 external_url 并更改了 GitLab 容器下环境变量 GITLAB_OMNIBUS_CONFIG 中的 GitLab 服务器 port 之后,文件应该看起来像这样:

version: '3.8'  
services:  
  
  gitlab-server:  
    image: 'gitlab/gitlab-ce:latest'  
    container_name: gitlab-server  
    environment:  
      GITLAB_ROOT_EMAIL: "admin@example.com"  
      GITLAB_ROOT_PASSWORD: "Abcd@0123456789"  
  
      # 新的更改  
      GITLAB_OMNIBUS_CONFIG: |  
        external_url 'http://localhost:8000'  
        nginx['listen_port'] = 8000   
    ports:  
      - '8000:8000'  
    volumes:  
      - ./gitlab/config:/etc/gitlab  
      - ./gitlab/data:/var/opt/gitlab

在这里,我们添加了一个新的环境变量 GITLAB_OMNIBUS_CONFIG。如果没有外部 URL,一些链接将重定向到一个以容器 ID 开头的无效 URL。但是,由于浏览器只知道完全限定域名或 IP,我们需要添加这个外部 URL,以便 GitLab 服务器将 http://localhost:8000 设置为到处重定向的基本 URL。 更新 docker-compose.yml 文件后,按 CTRL+C,然后运行

docker compose up --build --force-recreate

注册 GitLab Runner

一旦 GitLab 服务器加载了新更改,点击项目运行器页面下的 新建项目运行器 按钮,然后按照如下所示填写表单。

点击 创建运行器 按钮,它将引导您进入这个屏幕。

在此阶段,您已经在 GitLab 服务器中为运行器创建了条目,但实际上运行器尚未注册,正如 步骤 1 上方的消息所说: 在注册运行器之前必须安装 GitLab Runner。 这意味着我们需要添加另一个名为 GitLab Runner 的服务,一旦我们有了 GitLab Runner 服务,我们将在 GitLab Runner 服务内部运行下面 步骤 1 中的命令,然后我们的运行器就可以运行我们的流水线了。我们将在 GitLab Runner 容器准备好后运行以下命令。 gitlab-runner register –url http://localhost:8000 –token glrt-ydjvGwY6HqXrtBwz9Myh 让我们通过添加 GitLab Runner 容器来更新我们的 docker-compose.yml

version: '3.8'  
services:  
  
  gitlab-server:  
    image: 'gitlab/gitlab-ce:latest'  
    container_name: gitlab-server  
    environment:  
      GITLAB_ROOT_EMAIL: "admin@example.com"  
      GITLAB_ROOT_PASSWORD: "Abcd@0123456789"  
      GITLAB_OMNIBUS_CONFIG: |  
        external_url 'http://localhost:8000'  
        nginx['listen_port'] = 8000  
    ports:  
      - '8000:8000'  
    volumes:  
      - ./gitlab/config:/etc/gitlab  
      - ./gitlab/data:/var/opt/gitlab  
  
    
  # 添加 Gitlab Runner 容器的新变化  
  gitlab-runner:  
    image: gitlab/gitlab-runner:alpine  
    container_name: gitlab-runner  
    network_mode: 'host'

我们正在向 docker-compose.yml 添加一个新服务,用于 GitLab Runner,它将使用来自 Docker Hub 的 docker 镜像 gitlab/gitlab-runner:alpine。我们将 GitLab Runner 容器的 network_mode 设置为 host,这将把 GitLab Runner 容器放在宿主机的网络上,这样 GitLab 服务器可以通过 localhost 与之通信,而不是使用其容器名称(每次重新创建容器时,容器 ID 可能会更改)。 更新 docker-compose.yml 文件后,按 CTRL+C 停止正在运行的容器,然后运行

docker compose up --build --force-recreate

继续监控 Gitlab 服务器和 Runner 容器的健康状态。

一旦两者都显示健康状态,您可以回到项目的运行器页面,在这里 http://localhost:8000/root/build-with-lal/-/settings/ci_cd 下: 设置 → CI/CD → 运行器 URL 中的 build-with-lal 是我之前创建的仓库名称。

点击 新建项目运行器,并按照我们之前遵循的步骤来生成注册 GitLab 运行器的命令,该命令将如下所示:

gitlab-runner register  --url http://localhost:8000  --token glrt-ydjvGwY6HqXrtBwz9Myh

现在我们需要在我们的 GitLab 运行器容器内执行上述命令。首先,使用 docker compose 命令登录到 GitLab 运行器容器。 docker compose exec -it gitlab-runner /bin/bash 接下来运行以下命令

gitlab-runner register  --url http://localhost:8000  --token glrt-ydjvGwY6HqXrtBwz9Myh
  • 当询问 GitLab 实例 URL 时,除非您的 GitLab 服务器和运行器位于不同的机器上,否则按回车键保持默认。
  • 输入您喜欢的运行器名称。
  • 目前,我们将选择 Shell 作为流水线执行器。我们将在下一篇文章中介绍 docker 执行器。

一旦您填写完这些详细信息,您应该就完成了,运行器注册页面应该看起来像这样。

如果您切换回项目流水线,流水线应该已经运行并显示为通过,并打印出这些日志。

首先,它在Shell上打印当前日期,然后打印操作系统的详细信息。由于我们在注册运行器时选择了Shell作为流水线执行器,所以脚本将直接在 GitLab 运行器托管的操作系统上运行,正如您在 docker-compose.yml 中看到的,这是一个 Linux alpine 系统。

  
gitlab-runner:  
    image: gitlab/gitlab-runner:alpine # alpine OS  
  

这个运行器是专门为特定项目设置的,但是如果您想要注册一个全局运行器,使其对所有项目可用,可以执行任何项目的流水线,您可以在这里按照相同的步骤在管理员运行器 http://localhost:8000/admin/runners 下注册一个全局运行器。 在这里,您还可以查看所有已注册的运行器及其状态,包括项目特定的运行器和全局运行器。

以上就是如何使用 docker compose 将 GitLab 运行器作为容器服务运行,然后在那个 GitLab 运行器容器内注册一个流水线运行器来执行我们的项目流水线的全部内容。我们使用的执行器是 Shell,但这些天由于大多数项目都容器化了,它被广泛使用和采纳。

© 2011 - 2025 Macro Zhao的分享站

关于我

如遇到加载502错误,请尝试刷新😄

Hi,欢迎访问 Macro Zhao 的博客。Macro Zhao(或 Macro)是我在互联网上经常使用的名字。

我是一个热衷于技术探索和分享的IT工程师,在这里我会记录分享一些关于技术、工作和生活上的事情。

我的CSDN博客:
https://macro-zhao.blog.csdn.net/

欢迎你通过评论或者邮件与我交流。
Mail Me

推荐好玩(You'll Like)
  • AI 动·画
    • 这是一款有趣·免费的能让您画的画中的角色动起来的AI工具。
    • 支持几十种动作生成。
我的项目(My Projects)
  • 爱学习网

  • 小乙日语App

    • 这是一个帮助日语学习者学习日语的App。
      (当然初衷也是为了自用😄)
    • 界面干净,简洁,漂亮!
    • 其中包含 N1 + N2 的全部单词和语法。
    • 不需注册,更不需要订阅!完全免费!
  • 小乙日文阅读器

    • 词汇不够?照样能读日语名著!
    • 越读积累越多,积跬步致千里!
    • 哪里不会点哪里!妈妈再也不担心我读不了原版读物了!
赞助我(Sponsor Me)

如果你喜欢我的作品或者发现它们对你有所帮助,可以考虑给我买一杯咖啡 ☕️。这将激励我在未来创作和分享更多的项目和技术。🦾

👉 请我喝一杯咖啡

If you like my works or find them helpful, please consider buying me a cup of coffee ☕️. It inspires me to create and share more projects in the future. 🦾

👉 Buy me a coffee