gitlab--基础--4.4--CICD--runner--配置

gitlab–基础–4.4–CICD–runner–配置


1、怎么配置

  1. 可以直接修改 config.toml 文件。
  2. 文件更改时不需要重启服务,因为每隔三秒GitLab Runner会检查配置修改,并重新加载。

1.1、配置文件

cat /etc/gitlab-runner/config.toml 

内容

concurrent = 4
check_interval = 0

[session_server]
  session_timeout = 1800

[[runners]]
  name = "auto cic"
  url = "http://192.168.187.171:82"
  token = "QG9sssGDVLE"
  executor = "shell"
  [runners.custom_build_dir]
  [runners.cache]
    [runners.cache.s3]
    [runners.cache.gcs]
    [runners.cache.azure]

[[runners]]
  name = "oa"
  url = "http://192.168.187.171:82"
  token = "SQmpTxW6VXyPNFU8wcod"
  executor = "shell"
  [runners.custom_build_dir]
  [runners.cache]
    [runners.cache.s3]
    [runners.cache.gcs]
    [runners.cache.azure]
 

2、全局配置

2.1、concurrent

  1. 限制可以同时运行的作业数量。就是可以同时运行几个runner

2.2、log_level

日志级别

2.3、log_format

日志格式

2.4、check_interval

  1. 检查新作业的间隔长度,也就是runner间隔几秒访问一下GitLab
  2. 默认为3秒

2.4.1、计算 Runner进程 间隔几秒访问一下GitLab

  1. 公式: check_interval / runner的数量
  2. 说明
    1. check_interval= 10,runner的数量是2,那么 10/2=5
    2. 也就是 Runner进程 间隔5秒 访问一下GitLab

2.5、sentry_dsn

启用Sentry错误跟踪

2.6、listen_address

http服务监听地址

3、session_server

3.1、listen_address

会话服务器的内部 URL

3.2、advertise_address

访问会话服务器的 URL

3.3、session_timeout

  1. 作业完成后会话可以保持活动状态的秒数
  2. 默认值:1800秒

4、runners

每个runners部分定义一个runner服务

4.1 、url GitLab

实例 URL

4.2 、token

runner的的特殊令牌(不是注册令牌)

4.3 、tls-ca-file

使用 HTTPS 时验证对等方的证书的文件

4.4 、tls-cert-file

使用 HTTPS 时与对等方进行身份验证的证书的文件

4.5 、tls-key-file

使用 HTTPS 时要与对等方进行身份验证的私钥的文件

4.6 、limit

  1. 限制同时处理作业数量
  2. 0(默认):不限制

4.7 、executor

执行器,比如shell,docker

4.8 、shell

  1. 生成脚本的 shell 的名称
  2. 默认值:取决于平台。

4.9 、builds_dir

  1. 构建存储在所选执行程序上下文中的目录的绝对路径。例如,本地、Docker 或 SSH。

4.10、cache_dir

  1. 构建缓存存储在所选执行程序上下文中的目录的绝对路径。例如,本地、Docker 或 SSH。
  2. 如果使用docker executor,则需要在其volumes参数中包含该目录

4.11、environment

  1. 追加或覆盖环境变量。
  2. 如果想一些固定的变量,比如 registry 仓库地址,可以这样
[[runners]]
  name = "auto cic"
  url = "http://192.168.187.171:82"
  token = "QG9dyxxxYyZQGDVLE"
  # 追加或覆盖环境变量
  environment = ["CI_REGISTRY=http://192.168.187.171:82"]
  executor = "shell"
  [runners.custom_build_dir]
  [runners.cache]
    [runners.cache.s3]
    [runners.cache.gcs]
    [runners.cache.azure]

4.12、request_concurrency

  1. 限制来自 GitLab 的新作业的并发请求数
  2. 默认:1

4.13、output_limit

  1. 最大构建日志大小
  2. 默认值:4096(4MB)

4.14、pre_clone_script

  1. 在克隆 Git 存储库之前执行的命令

4.15、pre_build_script

在克隆 Git 存储库之后但在执行构建之前执行的命令

4.16、post_build_script

在执行构建之后执行的命令

4.17、clone_url

覆盖 GitLab 实例的 URL

4.18、debug_trace_disabled

  1. 禁用CI_DEBUG_TRACE特性。
  2. 当设置为true时,即使用户将CI_DEBUG_TRACE设置为true,调试日志(跟踪)也将保持禁用状态

4.19、referees

将结果作为工作工件传递给 GitLab

5、executors

运行CI Job的环境,比如shell环境

5.1、docker

  1. docker容器
  2. 需要配置 [runners.docker] and Docker Engine

5.2、docker-windows

  1. Windows Docker 容器
  2. 需要配置 [runners.docker] and Docker Engine

5.3、docker-ssh

  1. Docker 容器,使用 SSH 连接
  2. 需要配置 [runners.docker], [runners.ssh], 和Docker 引擎

5.4、ssh

  1. 远程SSH
  2. 需要配置 [runners.ssh]

5.5、parallels

  1. Parallels VM,使用 SSH 连接
  2. 需要配置 [runners.parallels] 和 [runners.ssh]

5.6、virtualbox

  1. VirtualBox VM,但使用 SSH 连接
  2. 需要配置 [runners.virtualbox] 和 [runners.ssh]

5.7、docker+machine

  1. 类似docker,但使用自动缩放的 Docker 机器
  2. 需要配置 [runners.docker] 和 [runners.machine]

5.8、docker-ssh+machine

  1. 类似docker-ssh,但使用自动缩放的 Docker 机器
  2. 需要配置 [runners.docker] 和 [runners.machine]

5.9、kubernetes

  1. Kubernetes pods
  2. 需要配置 [runners.kubernetes]

5.10、shell

默认执行器

6、[runners.custom_build_dir]

  1. 设置自定义构建目录参数
  2. 以下执行器是默认启用
    1. kubernetes
    2. docker
    3. docker-ssh
    4. docker+machine
    5. docker-ssh+machine
  3. 其他执行器是被默认禁用。

在这里插入图片描述

7、[runners.cache]

定义了分布式缓存功能。

在这里插入图片描述

8、[runners.docker]

定义了Docker容器参数

gitlab--基础--4.4--CICD--runner--配置_第1张图片

gitlab--基础--4.4--CICD--runner--配置_第2张图片

gitlab--基础--4.4--CICD--runner--配置_第3张图片

在这里插入图片描述

8.1、举例

[runners.docker]
  host = ""
  hostname = ""
  tls_cert_path = "/Users/ayufan/.boot2docker/certs"
  image = "ruby:2.6"
  memory = "128m"
  memory_swap = "256m"
  memory_reservation = "64m"
  oom_kill_disable = false
  cpuset_cpus = "0,1"
  cpus = "2"
  dns = ["8.8.8.8"]
  dns_search = [""]
  privileged = false
  userns_mode = "host"
  cap_add = ["NET_ADMIN"]
  cap_drop = ["DAC_OVERRIDE"]
  devices = ["/dev/net/tun"]
  disable_cache = false
  wait_for_services_timeout = 30
  cache_dir = ""
  volumes = ["/data", "/home/project/cache"]
  extra_hosts = ["other-host:127.0.0.1"]
  shm_size = 300000
  volumes_from = ["storage_container:ro"]
  links = ["mysql_container:mysql"]
  allowed_images = ["ruby:*", "python:*", "php:*"]
  allowed_services = ["postgres:9", "redis:*", "mysql:*"]
  [[runners.docker.services]]
    name = "mysql"
    alias = "db"
  [[runners.docker.services]]
    name = "redis:2.8"
    alias = "cache"
  [[runners.docker.services]]
    name = "postgres:9"
    alias = "postgres-db"
  [runners.docker.sysctls]
    "net.ipv4.ip_forward" = "1"

8.2、docker in docker 问题

Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
time="2018-12-17T11:12:33Z" level=error msg="failed to dial gRPC: cannot connect to the Docker daemon. Is 'docker daemon' running on this host?: dial unix

8.2.1、解决办法1

  1. 将本地的docker socket绑定到container里
  2. 具体方法是将volumes = [“/var/run/docker.sock:/var/run/docker.sock”]配置增加到config.toml文件的[runners.docker]里。

8.2.2、解决办法2

.gitlab-ci.yml文件中增加如下设置

services:
    - docker:dind

8.3、 docker in docker 的环境下,进行自动 login 问题

  1. docker in docker 的环境下,进行自动 login 操作
  2. docker in docker 的环境下,进行 ssh 远程连接其他机器进行版本更新

8.3.1、解决办法1

将volumes = [“/root/.docker/config.json:/root/.docker/config.json”,“/root/.ssh/:/root/.ssh/”] 添加到config.toml文件的[runners.docker]里。

你可能感兴趣的:(gitlab,gitlab,服务器,运维)