Gitlab-Ci:我如何在作业之间共享数据

tes*_*t42 7 yaml gitlab gitlab-ci gitlab-ci-runner

我想在两个作业之间共享一个文件,如果有更改的文件则修改它.python脚本将cache.json文件与更改进行比较,并有时修改cahce文件.

.gitlab-ci.yaml:

image: ubuntu

stages:
  - test

cache:
  key: one-cache
  paths:
    - cache.json

 job1:
   stage: test

script:
  # - touch cache.json
  - cat cache.json
  - python3 modify_json_file.py
  - cat cache.json
Run Code Online (Sandbox Code Playgroud)

问题是cache.json在下次作业运行时文件不存在.我收到错误消息:cat: cache.json: No such file or directory.我也确实插入了一次touch命令,但是如果没有touch命令,这不会改变下一次运行的任何内容.

我做错了什么或者我不理解cacheat gitlab错了.

Eka*_*ans 11

我认为你需要工件而不是缓存.

缓存vs工件:

cache - 用于项目依赖项的临时存储.对于保存中间构建结果(如jar或apk文件)没有用.Cache被设计用于加速对给定作业的后续运行的调用,通过保留依赖项(例如,npm包,Go供应商包等),因此不必从公共中重新获取它们互联网.虽然缓存可以被滥用以在阶段之间传递中间构建结果,但是可能存在伪像更适合的情况.

artifacts - 用于将在各阶段之间传递的阶段结果.工件被设计为上传构建的一些编译/生成位,并且可以由任意数量的并发运行器获取它们.它们保证可用,并且可以在作业之间传递数据.它们也可以从UI下载.

  • 很好的答案,但如果能举个例子就更好了。 (6认同)
  • 这个答案是不完整的,因为它没有解释“如何”使用工件。 (2认同)