用途
该技能面向 GitLab CI 流水线配置场景,帮助用户配置 artifacts(制品)与 cache(缓存),以达成两个目标:作业之间的数据传递,以及通过缓存加速构建执行。
主要能力
Artifacts(制品)
- 基本制品配置:在 job 中通过 artifacts.paths 指定需要保留的路径(如 dist/),并通过 expire_in 设置过期时间(如 1 week)。
- 制品报告:通过 artifacts.reports 配置 junit(如 junit.xml)以及 coverage_report(coverage_format 为 cobertura,path 指向覆盖率文件)。
- 条件性制品:通过 when 控制制品上传时机,可取 on_success、on_failure、always;通过 exclude 排除不需要的文件(如 dist/**/*.map)。
- 制品依赖:下游 job 通过 dependencies 指定要下载哪些上游 job 的制品;deploy 示例中通过 dependencies: [] 跳过所有制品下载。
Caching(缓存)
- 基本缓存配置:通过 default.cache 设置 key 与 paths(如 node_modules/、.npm/)。
- 缓存键策略:支持按分支(${CI_COMMIT_REF_SLUG})、基于锁定文件(files: package-lock.json)、以及组合键(prefix 配合 files)。
- 缓存策略:policy 可取 push(仅上传缓存)、pull(仅下载缓存)。示例中 install 使用 push,test 使用 pull。
- 回退键:通过 fallback_keys 指定在主键未命中时使用的备用键(如 ${CI_DEFAULT_BRANCH}、main)。
- 分布式缓存:在 GitLab Runner 中配置 S3,示例包含 runners.cache 的 Type = "s3"、Shared = true,以及 runners.cache.s3 的 ServerAddress、BucketName、BucketLocation。
对比与最佳实践
- Artifacts 与 Cache 对比:用途(作业间传递数据 vs 加速作业执行)、存储位置(GitLab 服务器 vs Runner 本地或 S3)、可靠性(有保证 vs 尽力而为)、过期(均可配置)、跨流水线(借助 dependencies / 借助 keys 均支持)。
- 最佳实践:用缓存存放依赖(node_modules、vendor),用制品存放构建输出;设置合理的过期时间;使用基于锁定文件的缓存键;排除 source map 与不必要的文件;对只读取缓存的 job 使用 policy: pull。
使用方式
该技能以 GitLab CI 的 YAML 配置片段形式呈现,用户可将相应配置写入 .gitlab-ci.yml 的 job 或 default 段中。分布式缓存部分需在 GitLab Runner 配置文件中设置。
适用场景
- 需要在多个 job 或阶段之间传递构建产物时。
- 需要缓存依赖目录以缩短流水线执行时间时。
- 需要上传测试报告或覆盖率报告时。
限制
关于该技能的运行环境要求、版本依赖、收费情况等信息,资料中暂未提供。