gitlab--基础--4.4--CICD--runner--配置
将volumes = [“/root/.docker/config.json:/root/.docker/config.json”,“/root/.ssh/:/root/.ssh/”] 添加到config.toml文件的[runners.docker]里。使用 HTTPS 时要与对等方进行身份验证的私钥的文件。使用 HTTPS 时与对等方进行身份验证的证书的文件。在克隆 Git 存储库之后但在执行
·
gitlab–基础–4.4–CICD–runner–配置
1、怎么配置
- 可以直接修改 config.toml 文件。
- 文件更改时不需要重启服务,因为每隔三秒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
- 限制可以同时运行的作业数量。就是可以同时运行几个runner
2.2、log_level
日志级别
2.3、log_format
日志格式
2.4、check_interval
- 检查新作业的间隔长度,也就是runner间隔几秒访问一下GitLab
- 默认为3秒
2.4.1、计算 Runner进程 间隔几秒访问一下GitLab
- 公式: check_interval / runner的数量
- 说明
- check_interval= 10,runner的数量是2,那么 10/2=5
- 也就是 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
- 作业完成后会话可以保持活动状态的秒数
- 默认值: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
- 限制同时处理作业数量
- 0(默认):不限制
4.7 、executor
执行器,比如shell,docker
4.8 、shell
- 生成脚本的 shell 的名称
- 默认值:取决于平台。
4.9 、builds_dir
- 构建存储在所选执行程序上下文中的目录的绝对路径。例如,本地、Docker 或 SSH。
4.10、cache_dir
- 构建缓存存储在所选执行程序上下文中的目录的绝对路径。例如,本地、Docker 或 SSH。
- 如果使用docker executor,则需要在其volumes参数中包含该目录
4.11、environment
- 追加或覆盖环境变量。
- 如果想一些固定的变量,比如 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
- 限制来自 GitLab 的新作业的并发请求数
- 默认:1
4.13、output_limit
- 最大构建日志大小
- 默认值:4096(4MB)
4.14、pre_clone_script
- 在克隆 Git 存储库之前执行的命令
4.15、pre_build_script
在克隆 Git 存储库之后但在执行构建之前执行的命令
4.16、post_build_script
在执行构建之后执行的命令
4.17、clone_url
覆盖 GitLab 实例的 URL
4.18、debug_trace_disabled
- 禁用CI_DEBUG_TRACE特性。
- 当设置为true时,即使用户将CI_DEBUG_TRACE设置为true,调试日志(跟踪)也将保持禁用状态
4.19、referees
将结果作为工作工件传递给 GitLab
5、executors
运行CI Job的环境,比如shell环境
5.1、docker
- docker容器
- 需要配置 [runners.docker] and Docker Engine
5.2、docker-windows
- Windows Docker 容器
- 需要配置 [runners.docker] and Docker Engine
5.3、docker-ssh
- Docker 容器,使用 SSH 连接
- 需要配置 [runners.docker], [runners.ssh], 和Docker 引擎
5.4、ssh
- 远程SSH
- 需要配置 [runners.ssh]
5.5、parallels
- Parallels VM,使用 SSH 连接
- 需要配置 [runners.parallels] 和 [runners.ssh]
5.6、virtualbox
- VirtualBox VM,但使用 SSH 连接
- 需要配置 [runners.virtualbox] 和 [runners.ssh]
5.7、docker+machine
- 类似docker,但使用自动缩放的 Docker 机器
- 需要配置 [runners.docker] 和 [runners.machine]
5.8、docker-ssh+machine
- 类似docker-ssh,但使用自动缩放的 Docker 机器
- 需要配置 [runners.docker] 和 [runners.machine]
5.9、kubernetes
- Kubernetes pods
- 需要配置 [runners.kubernetes]
5.10、shell
默认执行器
6、[runners.custom_build_dir]
- 设置自定义构建目录参数
- 以下执行器是默认启用
- kubernetes
- docker
- docker-ssh
- docker+machine
- docker-ssh+machine
- 其他执行器是被默认禁用。
7、[runners.cache]
定义了分布式缓存功能。
8、[runners.docker]
定义了Docker容器参数
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
- 将本地的docker socket绑定到container里
- 具体方法是将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 问题
- docker in docker 的环境下,进行自动 login 操作
- 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]里。
更多推荐
已为社区贡献1条内容
所有评论(0)