Gitlab CI / CD缓存

时间:2020-10-26 12:18:02

标签: gitlab gitlab-ci gitlab-ci-runner

我希望按照此处的文档https://docs.gitlab.com/ee/ci/caching/#how-archiving-and-extracting-works尝试在Gitlab项目上进行缓存。我有一个特定于项目的运行程序,并且正在使用docker executor,但出现错误

cat: vendor/hello.txt: No such file or directory

如何解决该问题?我在运行程序配置中设置了disable_cache = false,但这没有帮助。 编辑:使用私有gitlab实例12.3。

2 个答案:

答案 0 :(得分:1)

我使用分布式缓存实现了这一点,我发现这很容易。首先,您需要一个与S3存储桶或S3兼容的存储设备,例如minio。您可以使用以下命令在gitlabRunner存在的地方设置MinIo。

docker run -it --restart always -p 9005:9000 \
        -v /.minio:/root/.minio -v /export:/export \
        --name minio \
        minio/minio:latest server /export

检查服务器的IP地址:

hostname --ip-address

您的缓存服务器将位于 MY_CACHE_IP:9005

创建供转轮使用的存储桶:

sudo mkdir /export/runner
在这种情况下,

runner是存储桶的名称。如果您选择其他存储桶,那么它将有所不同。所有缓存都将存储在/ export目录中。

阅读MinIO的访问和秘密密钥并使用它来配置Runner:

sudo cat /export/.minio.sys/config/config.json | grep Key

下一步是配置运行程序以使用缓存。为此,下面是示例config.toml

[[runners]]
  limit = 10
  executor = "docker+machine"
  [runners.cache]
    Type = "s3"
    Path = "path/to/prefix"
    Shared = false
    [runners.cache.s3]
      ServerAddress = "s3.example.com"
      AccessKey = "access-key"
      SecretKey = "secret-key"
      BucketName = "runner"
      Insecure = false

我希望这个答案对您有帮助

参考:

https://docs.gitlab.com/runner/install/registry_and_cache_servers.html

https://docs.gitlab.com/runner/configuration/autoscale.html#distributed-runners-caching

答案 1 :(得分:1)

由于这篇帖子https://gitlab.com/gitlab-org/gitlab-runner/-/issues/336#note_263931046,我设法解决了这个问题。 基本上已添加

variables:
GIT_CLEAN_FLAGS: none

成功了。 @Bilal的答案肯定是正确的,但是我正在寻找稍微不同的解决方案。