如何部署极狐GitLab Runner Cache 缓存配置?
本文作者:徐晓伟
GitLab 是一个全球知名的一体化 DevOps 平台,很多人都通过私有化部署 GitLab 来进行源代码托管。极狐GitLab 是 GitLab 在中国的发行版,专门为中国程序员服务。可以一键式部署极狐GitLab。
极狐GitLab Runner Cache 缓存 支持 S3 标准协议,如:OSS、OOS 等等
- 支持 S3 标准协议
- 支持 MinIO
- 支持 阿里云 OSS 对象储存
- 支持 天翼云 OOS 对象储存
说明
-
本文使用 Docker 安装 MinIO。
-
本文配置极狐 GitLab Runner 的缓存类型为 s3,使用的软件是
MinIO
、阿里云 OSS 对象储存
、天翼云 OOS 对象储存
。 -
本文的目的是在 GitLab Runner 执行完成时,通过配置流水线中的缓存,将 Maven依赖、Node依赖等,上传到 minio中,在下次执行流水线时,GitLab Runner 会自动下载上次缓存的文件并解压,提高流水线构建的速度。
-
极狐GitLab 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 的缓存配置,配置修改完成后启动的流水线会立即生效
-
MinIO 配置(支持)
[runners.cache] # 激活缓存的类型为:s3 Type = "s3" # 是否共享缓存 # 如果不共享,则会根据 [[runners]] 中的 token 前 8 位创建文件夹,每个 [[runners]] 缓存仅自己能使用 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
-
阿里云 OSS 对象储存配置(支持)
[runners.cache] # 激活缓存的类型为:s3 Type = "s3" # 是否共享缓存 # 如果不共享,则会根据 [[runners]] 中的 token 前 8 位创建文件夹,每个 [[runners]] 缓存仅自己能使用 Shared = false [runners.cache.s3] # 缓存服务器的地址+端口 # 此处以青岛地区为例,这里不填写协议 ServerAddress = "oss-cn-qingdao.aliyuncs.com" # Access Keys 账户凭证 AccessKey = "" SecretKey = "" # 创建的 Buckets 名称 BucketName = "" # 设置为 false 代表使用 https Insecure = false
-
天翼云 OOS 对象储存配置
使用的是:经典版对象存储(经典版)-经典Ⅰ型
[runners.cache] # 激活缓存的类型为:s3 Type = "s3" # 是否共享缓存 # 如果不共享,则会根据 [[runners]] 中的 token 前 8 位创建文件夹,每个 [[runners]] 缓存仅自己能使用 Shared = false [runners.cache.s3] # 缓存服务器的地址+端口 # 此处以青岛地区为例,这里不填写协议 ServerAddress = "oos-sdqd.ctyunapi.cn" # Access Keys 账户凭证 AccessKey = "" SecretKey = "" # 创建的 Buckets 名称 BucketName = "" # 设置为 false 代表使用 https Insecure = false # 填写区域,不填写无法使用 # 此处以山东青岛地区为例 BucketLocation = "sdqd"
-
-
如果未配置流水线缓存,在流水线执行时,会出现如下日志
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" 禁用即可
更多关于极狐GitLab 的最佳实践,请搜索关注【极狐GitLab】公众号或者登录极狐GitLab 官网 https://gitlab.cn 进行学习。