本文内容以语雀为准
说明
- 本文使用 Docker 安装 minio。
- 本文配置 GitLab Runner 的缓存类型为 s3,使用的软件是 minio。
- 本文的目的是在 GitLab Runner 执行完成时,通过配置流水线中的缓存,将 Maven依赖、Node依赖等,上传到 minio中,在下次执行流水线时,GitLab Runner 会自动下载上次缓存的文件并解压,提高流水线构建的速度。
- 使用 MinIO
- 分布式 Runner 缓存
安装 minio
- 创建 minio 容器
9000端口:上传下载文件的端口
9001端口:后台管理页面端口
/minio/data:储存文件的目录
docker run \
-itd \
--restart always \
--privileged=true \
-p 9000:9000 \
-p 9001:9001 \
--name minio1 \
-v /minio/data:/data \
quay.io/minio/minio server /data --console-address ":9001"
firewall-cmd --zone=public --add-port=9000/tcp --permanent
firewall-cmd --zone=public --add-port=9001/tcp --permanent
firewall-cmd --reload
firewall-cmd --list-all
- 默认用户名:minioadmin,默认密码:minioadmin
- 创建一个Buckets,用于储存 GitLab Runner 的缓存,名称为:bucket-1
- 创建一个Access Keys,作为 GitLab Runner 上传、下载缓存的凭证。
- 设置 GitLab Runner 的缓存配置
配置修改完成后启动的流水线会立即生效
[runners.cache]
# 激活缓存的类型为:s3
Type = "s3"
# 是否共享缓存
Shared = false
[runners.cache.s3]
# 缓存服务器的地址+端口
ServerAddress = "192.168.80.14:9000"
# Access Keys 账户凭证
AccessKey = "hCfpQlQuEXtBYEAw"
SecretKey = "kHH5RwzCRiRUtujKlNRZZZFpuANm6Yr1"
# 创建的 Buckets 名称
BucketName = "bucket-1"
# 设置为 true 代表不使用 https
Insecure = true
- 如果未配置流水线缓存,在流水线执行时,会出现如下日志
No URL provided, cache will not be downloaded from shared cache server. Instead a local version of cache will be extracted.
No URL provided, cache will not be uploaded to shared cache server. Cache will be stored only locally.
- 流水线正确设置后,在流水线执行时,会出现如下日志
# 首次设置成功后执行,会出现下列日志,不过不用担心,本次执行成功上传依赖完成后,下次就不会出现了
# 若缓存文件被删除,也会出现此日志
WARNING: file does not exist
Failed to extract cache
Downloading cache.zip from http://192.168.80.14:9000/bucket-1/runner/HcQesvsi/project/2/default-protected
Successfully extracted cache
Uploading cache.zip to http://192.168.80.14:9000/bucket-1/runner/HcQesvsi/project/2/default-protected
- 若要禁用缓存,只需要将 Type = “s3” 禁用即可