在前面的文章中提到了,用安装包的方式在 Ubuntu
上安装极狐GitLab Runner。详细内容可以查看博客文章在 Ubuntu 上安装使用极狐GitLab Runner。今天我们来演示用容器的方式运行极狐GitLab Runner。这种方式与操作系统无关,只要有 Docker 环境即可。
以容器的方式运行极狐GitLab Runner
容器运行的极狐GitLab Runner 实例是对 gitlab-runner
命令的一个封装。使用起来就像直接使用 gitlab-runner
命令一样。
首先需要确保自己的环境已经安装了 docker
并且 docker
是运行正常的,可以用 docker version
或 docker 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,tag
是 docker
、runner
:
名为 #5(65dxPiun) 的 Runner 是用安装包安装注册的 Runner。
极狐GitLab Runner 的使用
依旧使用在 Ubuntu 上安装使用极狐GitLab Runner中的 Demo,现在让容器化运行的 Runner 来完成 CI/CD Pipeline 的执行。可以在 .gitlab-ci.yml
的 job
中增加 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 来执行的(如图中红色方框所示)。
如果要查看 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
日志结果如下:
这和在 Pipeline 控制台中的输出是一致的,大家自行查看即可。