cache

Cache directories between jobs to speed up pipelines.

Supported: key (string, files, prefix), policy, when, untracked, unprotect, fallback_keys, multiple caches

Examples

Key as string

job:
  script: echo "job"
  cache:
    key: my-cache
    paths:
      - vendor/

Key based on files

job:
  script: echo "job"
  cache:
    key:
      files:
        - Gemfile.lock
    paths:
      - vendor/

Key with prefix

job:
  script: echo "job"
  cache:
    key:
      files:
        - Gemfile.lock
      prefix: $CI_JOB_NAME
    paths:
      - vendor/

Cache policy

job:
  script: echo "job"
  cache:
    key: my-cache
    paths:
      - vendor/
    policy: pull

Cache on failure

job:
  script: echo "job"
  cache:
    key: my-cache
    paths:
      - vendor/
    when: on_failure

Fallback keys

job:
  script: echo "job"
  cache:
    key: my-cache
    paths:
      - vendor/
    fallback_keys:
      - fallback-key-1
      - fallback-key-2

Untracked files

job:
  script: echo "job"
  cache:
    untracked: true
    paths:
      - vendor/

Unprotect cache

job:
  script: echo "job"
  cache:
    key: my-cache
    paths:
      - vendor/
    unprotect: true

Multiple caches

job:
  script: echo "job"
  cache:
    - key: gems
      paths:
        - vendor/gems/
    - key: node
      paths:
        - node_modules/