使用缓存加速构建

Java 缓存

  1. - stage:
  2. - java:
  3. caches:
  4. - path: /root/.m2/repository
  5. params:
  6. build_type: maven
  7. workdir: ${git-checkout}
  8. options: -am -pl user
  9. target: ./user/target/user.jar
  10. container_type: openjdk
  1. - stage:
  2. - java-build:
  3. caches:
  4. - path: /root/.m2/repository
  5. version: "1.0"
  6. params:
  7. build_cmd:
  8. - mvn package
  9. jdk_version: 8
  10. workdir: ${git-checkout}

JS 缓存

  1. version: "1.1"
  2. stages:
  3. - stage:
  4. - git-checkout:
  5. params:
  6. depth: 1
  7. - stage:
  8. - js:
  9. caches:
  10. - path: ${git-checkout}/node_modules
  11. params:
  12. workdir: ${git-checkout}
  13. build_cmd: npm run build
  14. container_type: spa
  1. version: "1.1"
  2. stages:
  3. - stage:
  4. - git-checkout:
  5. params:
  6. depth: 1
  7. - stage:
  8. - js:
  9. caches:
  10. # 当缓存共享冲突的时候
  11. - key: '{{basePath}}/master/{{endPath}}'
  12. path: ${git-checkout}/node_modules
  13. params:
  14. workdir: ${git-checkout}
  15. build_cmd: npm run build
  16. container_type: spa

其他语言缓存

caches 为数组对象,可定义多个 pathkey

  • caches[]:path:指定目录进行缓存,后续构建会将该缓存文件放回原目录,path 只能为绝对路径(以 / 开头),或在 erda 中构建路径 ${}(同样为绝对路径)。
  • caches[]:key:未指定 key 时,系统将自动生成。当缓存发生冲突时,用户需自定义 key,且必须以 {{basePath}} 开头,以 {{endPath}} 结尾,中间名称可自定义。

因默认缓存是以 /appId/projectId/hash(path) 地址存储在 nfs 上,因此同一项目中的同一应用可能会发生冲突。

::: tip 提示 {{basePath}} = /appId/projectId/ {{endPath}} = hash(path) :::

使用其他语言加速构建时,例如 golang,您可以缓存 vendor 文件。

  1. caches:
  2. - path: ${git-checkout}/vendor