在GitLab运行器上配置缓存

lau*_*ens 6 gitlab-ci-runner

我没有配置缓存目录,但是以某种方式无法正常工作。我什至不确定它是否需要config.toml文件。

我的config.toml:

concurrent = 1
check_interval = 0

[session_server]
  session_timeout = 1800

[[runners]]
  cache_dir = /tmp/gitlab-runner-cache
Run Code Online (Sandbox Code Playgroud)

...在/etc/gitlab-runner/config.toml和〜/ .gitlab-runner / config.toml中

我的.gitlab-ci.yml:

image: docker:latest
services:
  - docker:dind

cache:
  key: "myCache"
  paths:
    - ${CI_PROJECT_DIR]/.m2/

variables:
  DOCKER_DRIVER: overlay
  MAVEN_OPTS: -Dmaven.repo.local=${CI_PROJECT_DIR}/.m2

stages:
  - build
  - acceptance

maven-build:
  image: maven:3.3-jdk-8
  stage: build
  script: "mvn clean package"
  artifacts:
    paths:
      - target/*.jar

maven-acceptance:
  dependencies:
    - maven-build
  image: maven:3.3-jdk-8
  stage: acceptance
  script: "mvn verify"
Run Code Online (Sandbox Code Playgroud)

当我尝试时:gitlab-runner exec shell maven-build

我收到错误:

ERROR: Could not create cache adapter               error=cache factory not found: factory for cache adapter "" was not registered
Run Code Online (Sandbox Code Playgroud)

构建成功,但未缓存.m2存储库...

因此,我有两个问题:

  1. 如何知道gitlab-runner是否实际使用了我的config.yml?
  2. 什么是缓存的正确配置?

提前致谢!

Kov*_*vah 6

我刚才遇到了同样的问题。我不确定您使用哪个版本的 Gitlab,但版本 12 支持 S3 兼容存储或 GCS 作为缓存提供程序(请参阅文档),但没有像cache_dir = /tmp/gitlab-runner-cache.

我遇到的问题是,我忘记添加Type = "s3"[runners.cache]Runner 配置部分:

  [runners.cache]
    Type = "s3"
    Shared = true
    [runners.cache.s3]
      ServerAddress = ...
Run Code Online (Sandbox Code Playgroud)

  • 是的,据我所知。您可以启动本地 Minio S3 兼容服务器并将其用作 S3 缓存,而不是使用 AWS 或 GCS。这样所有缓存都保留在您的服务器上。 (2认同)