GitLab CI/CD 语法四

56 阅读1分钟

cache 缓存

  • 存储编译项目所需的运行时依赖项,指定项目工作空间中需要在job之间缓存的文件或目录
  • 全局cache定义在job之外,针对所有job生效。job中cache优先于全局。

cache:paths

  • 在job build中定义缓存,将会缓存target目录下的所有.jar文件
  • 当在全局定义了cache:paths 会被job中覆盖。以下实例将缓存target目录。
  • 由于缓存是在job之间共享的,如果不同的job适用不同的路径就会出现了缓存覆盖的问题。可以设置cache: key,让不同的job缓存不同的chche
build:
  script: test
  cache:
    paths:
      - target/*.jar
cache: 
  paths:
    - my/files

build:
  script: echo "hello"
  cache: 
    key: build
    paths:
      - target/

cache: key 缓存标记

  • 为缓存做个标记,可以设置job、分支为key来实现分支作业特定的缓存
  • 为不同job定义了不同的cache: key时,会为每个job分配一个独立的cache
  • cache:key 变量可以使用任何预定义变量,默认default
# 按照分支设置缓存
cache:
  key: ${CI_COMMIT_REF_SLUG}

cache:key:files 文件变化自动创建缓存

files: 文件发生变化自动重新生成缓存(files最多指定两个文件),提交的时候检查指定的文件。根据指定的文件生成密钥计算SHA校验和,如果文件未改变值为default

cache:
  key:
    files:
      - package,json
  paths:
    - node_modules

cache:policy 缓存策略

默认: 在执行开始时下载文件,并在执行结束时重新上传文件。