缓存,项目里用到的各种依赖,不可能每次都下载,以及构建、语法检测等都会产生缓存。在k8s runner中使用分布式存储ceph来保存这些文件,大概700m。每次使用时特别慢,大部分时间都花在下载缓存,上传缓存。当前项目整个流水线跑下来需要10多分钟。而是用docker部署的runner,时间减少到3分钟,因为使用的本地磁盘来保存缓存。
version: "3.9"
services:
gitrunner:
image: 'gitlab/gitlab-runner'
container_name: "gitlab-runner"
restart: always
volumes:
- './data/config:/etc/gitlab-runner'
- './data/cache:/tmp/cache'
- './data/ssl:/etc/gitlab-runner/certs/'
- '/usr/bin/docker:/usr/bin/docker'
- '/var/run/docker.sock:/var/run/docker.sock'
mkdir -p data/config
mkdir -p data/cache
mkdir -p data/ssl
如果 gitlab 是 docker 部署的,ssl 证书所在路径为:/etc/gitlab/ssl/xxx.com.crt
将证书放到ssl目录,整体结构为
.
├── data
│ ├── cache
│ ├── config
│ └── ssl
│ └── xx.xx.com.crt
└── docker-compose.yaml
docker-compose up -d
访问Gitlab全局 Runner 配置地址:https://xxx.com/admin/runners
docker exec -it gitlab-runner gitlab-runner register --non-interactive --executor "docker" --docker-image alpine:latest --url "https://xx.xx.com" --registration-token "RQxx7UtMssiWyzWqtUMr" --description "172.30.7.17-docker-runner" --tag-list "docker-runner,share-runner,172.30.7.17-runner" --run-untagged="true" --locked="false" --access-level="not_protected"
访问全局 Runner 配置地址:https://xxx.com/admin/runners
vim data/config/config.toml
concurrent
:默认为1,结合服务器配置自行修改
[runners.docker]下的volumes更改为:volumes = ["/opt/compose/gitlab-runner/data/cache:/cache","/usr/bin/docker:/usr/bin/docker","/var/run/docker.sock:/var/run/docker.sock"]
/opt/compose/gitlab-runner/data/cache
:前面创建的挂载目录/usr/bin/docker:/usr/bin/docker,/var/run/docker.sock:/var/run/docker.sock
:实现docker in docker,用于打镜像pull_policy = "if-not-present"