在前面的文章中提到了,用安装包的方式在 Ubuntu 上安装极狐GitLab Runner。详细内容可以查看博客文章在 Ubuntu 上安装使用极狐GitLab Runner。今天我们来演示用容器的方式运行极狐GitLab Runner。这种方式与操作系统无关,只要有 Docker 环境即可。

以容器的方式运行极狐GitLab Runner

容器运行的极狐GitLab Runner 实例是对 gitlab-runner 命令的一个封装。使用起来就像直接使用 gitlab-runner 命令一样。

首先需要确保自己的环境已经安装了 docker 并且 docker 是运行正常的,可以用 docker versiondocker info 命令来确认:

$ docker version
Client: Docker Engine - Community
 Version:           20.10.11
 API version:       1.41
 Go version:        go1.16.9
 Git commit:        dea9396
 Built:             Thu Nov 18 00:37:06 2021
 OS/Arch:           linux/amd64
 Context:           default
 Experimental:      true

Server: Docker Engine - Community
 Engine:
  Version:          20.10.11
  API version:      1.41 (minimum version 1.12)
  Go version:       go1.16.9
  Git commit:       847da18
  Built:            Thu Nov 18 00:35:15 2021
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.4.12
  GitCommit:        7b11cfaabd73bb80907dd23182b9347b4245eb5d
 runc:
  Version:          1.0.2
  GitCommit:        v1.0.2-0-g52b36a2
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0

接着用如下命令就可以创建一个 gitlab-runner 容器

$ docker run -d --name gitlab-runner-docker --restart always -v $PWD:/etc/gitlab-runner -v /var/run/docker.sock:/var/run/docker.sock gitlab/gitlab-runner:latest
9f005be60f1a7389f2246b6be230ec9898c6ec688cdeb6d036ec99c86e9f264a

接着,可以进入启动的容器进行一番查看:

$ docker exec -it 9f005be60f1a sh
gitlab-runner --version
Version:      14.5.0
Git revision: f0a95a76
Git branch:   14-5-stable
GO version:   go1.13.8
Built:        2021-11-21T16:54:22+0000
OS/Arch:      linux/amd64

可以看到容器里面已经安装了 gitlab-runner。接下来可以进行 Runner 注册。

极狐GitLab Runner 注册

执行 gitlab-runner register 命令,输入需要的信息即可完成 Runner 的注册。

$ root@9f005be60f1a:/# gitlab-runner register
Runtime platform                                    arch=amd64 os=linux pid=68 revision=f0a95a76 version=14.5.0
Running in system-mode.

Enter the GitLab instance URL (for example, https://gitlab.com/):
https://jh-xiaomage.gitlab.cn
Enter the registration token:
sFV-HEkLC_NgH2vLALfG
Enter a description for the runner:
[9f005be60f1a]: container-runner
Enter tags for the runner (comma-separated):
docker,runner
Registering runner... succeeded                     runner=sFV-HEkL
Enter an executor: custom, docker, shell, ssh, virtualbox, docker-ssh, parallels, docker+machine, docker-ssh+machine, kubernetes:
docker
Enter the default Docker image (for example, ruby:2.6):
docker:20.10.7-dind
Runner registered successfully. Feel free to start it, but if it's running already the config should be automatically reloaded!

在极狐GitLab Runner 配置页面可以看到多了一个 Runner,tagdockerrunner

container-runner

名为 #5(65dxPiun) 的 Runner 是用安装包安装注册的 Runner。

极狐GitLab Runner 的使用

依旧使用在 Ubuntu 上安装使用极狐GitLab Runner中的 Demo,现在让容器化运行的 Runner 来完成 CI/CD Pipeline 的执行。可以在 .gitlab-ci.ymljob 中增加 tags 字段,如果 tags 的内容和 Runner 的 tag 相匹配,则此 Runner 被分配用来执行此次 CI/CD Pipeline。文件内容如下:

services:
  - docker:20.10.7-dind

stages:          
  - build

build:
  stage: build
  tags: 
    - docker
  services:
    - docker:20.10.7-dind
  script:
    - docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY
    - docker build -t $CI_REGISTRY_IMAGE:2.0.0 .
    - docker push $CI_REGISTRY_IMAGE:2.0.0

查看 CI/CD Pipeline 构建日志

runner-pipeline-log

可以看到此次构建是用容器化的 Runner 来执行的(如图中红色方框所示)。

如果要查看 Runner 的 log,可以找到 Runner 对应的容器,用 logs 命令查看即可:

$ docker ps -a
CONTAINER ID   IMAGE                                         COMMAND                  CREATED              STATUS                          PORTS           NAMES
96950613c51a   ca749f2062c4                                  "dockerd-entrypoint.…"   About a minute ago   Up About a minute               2375-2376/tcp   runner-x8mctw4w-project-2-concurrent-0-952d88e4160ffe6a-build-2

$ docker logs -f 96950613c51a

日志结果如下:

runner-log

这和在 Pipeline 控制台中的输出是一致的,大家自行查看即可。

60天免费试用极狐GitLab专业版

极狐GitLab不仅是源代码管理或CI/CD工具,它是一个覆盖完整软件开发生命周期和DevOps的开放式一体化平台。

企业版试用
售前咨询
联系电话
在线支持
预约演示