1. GitLab Runner 命令的使用方式

GitLab Runner Docker映像(基于Ubuntu或Alpine Linux)被设计为标准gitlab-runner命令的包装器,就像GitLab Runner是直接安装在主机上一样。

运行在主机上的 runner 执行命令:

  1. gitlab-runner <Runner command and options...>

运行在 Docker 上的 runner 执行命令:

  1. docker run <chosen docker options...> gitlab/gitlab-runner <Runner command and options...>

//例子

  1. $ docker run --rm -it gitlab/gitlab-runner --help
  2. ...

简而言之,gitlab-runner部分命令被替换 docker run [docker options] gitlab/gitlab-runner,而Runner的其余命令保持不变,唯一的区别是该gitlab-runner命令在Docker容器内部执行。

2. Docker 安装

//安装 Docker

  1. $ curl -L --output /etc/yum.repos.d/docker-ce.repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
  2. $ yum -y install docker-ce
  3. $ mkdir /etc/docker
  4. $ tee /etc/docker/daemon.json <<-'EOF'
  5. {
  6. "registry-mirrors": ["https://g9ppwtqr.mirror.aliyuncs.com"]
  7. }
  8. EOF
  9. $ systemctl start docker && systemctl enable docker

您需要将配置卷安装到gitlab-runner容器中以用于配置和其他资源:

  1. $ docker run -d --name gitlab-runner --restart always \
  2. -v /data/etc/gitlab-runner:/etc/gitlab-runner \
  3. -v /var/run/docker.sock:/var/run/docker.sock \
  4. harbor.xiodi.cn/tools/gitlab-runner:v12.10.0

[info] 使用 hub 镜像:gitlab/gitlab-runner:v12.10.0

接下来,就是注册 Runner,注册之前,它不会从事任何工作。

3. 更新配置

如果更改配置 config.toml ,可能需要重启 Runner。确保重新启动整个容器,而不是使用gitlab-runner restart

  1. $ docker restart gitlab-runner

4. 升级 Runner

  1. $ docker pull gitlab/gitlab-runner:latest
  2. $ docker stop gitlab-runner && docker rm gitlab-runner
  3. $ docker run -d --name gitlab-runner --restart always \
  4. -v /var/run/docker.sock:/var/run/docker.sock \
  5. -v /data/etc/gitlab-runner:/etc/gitlab-runner \
  6. gitlab/gitlab-runner:latest

5. 读取 GitLab Runner 日志

当GitLab Runner作为前台任务启动时(无论是本地安装的二进制文件还是在Docker容器内部),日志都会打印到标准输出。当GitLab Runner作为系统服务(例如,使用Systemd)启动时,大多数情况下,日志是通过Syslog或其他系统日志记录机制记录的。

随着GitLab Runner作为基于Docker的服务启动,由于该gitlab-runner …命令是容器的主要过程,因此可以使用该docker logs命令读取日志。

例如,如果使用上面的 docker 方式启动的 runner

  1. $ docker logs gitlab-runner

6. 安装受信任的SSL服务器证书

如果您的GitLab CI服务器使用自签名SSL证书,则应确保GitLab Runner容器信任该GitLab CI服务器证书,以使它们能够相互通信。

将该gitlab/gitlab-runner映像配置为在上查找受信任的SSL证书/etc/gitlab-runner/certs/ca.crt,但是可以使用-e “CA_CERTIFICATES_PATH=/DIR/CERT”配置选项进行更改 。

将ca.crt文件复制到certs数据卷(或容器)上的目录中。该ca.crt文件应包含您希望GitLab Runner信任的所有服务器的根证书。GitLab Runner容器将ca.crt在启动时导入文件,因此,如果容器已经在运行,则可能需要重新启动它以使更改生效。