当前位置: 首页 > 知识库问答 >
问题:

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

赫连瑾瑜
2023-03-14

我想在两个作业之间共享一个文件,如果有更改的文件,请对其进行修改。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

问题是cache. json文件在下一次作业运行时不存在。我收到错误消息:cat:cache.json:没有这样的文件或目录。我也插入了一次touch命令,但这不会改变没有touch命令的下一次运行的任何内容。

我做错了什么吗?或者我不理解gitlab的<code>缓存</code>。

共有1个答案

南门建章
2023-03-14

我认为你需要人工制品而不是缓存。

从缓存与工件:

缓存-用于项目依赖关系的临时存储。对于保存中间构建结果(如jar或apk文件)没有用。缓存旨在通过保存依赖关系(例如,npm包、Go供应商包等)来加速给定作业后续运行的调用。)这样它们就不必从公共互联网上重新获取了。虽然缓存可能被滥用来在阶段之间传递中间构建结果,但是可能存在工件更适合的情况。

工件-用于将在阶段之间传递的阶段结果。工件被设计为上传编译/生成的部分构建,并且可以由任意数量的并发Runner获取。它们保证可用,并且可以在作业之间传递数据。它们还可以从UI下载。

 类似资料:
  • 问题内容: 我们正在考虑将ci从jenkins迁移到gitlab。我们有几个项目具有相同的构建工作流程。现在,我们使用一个定义了管道的共享库,而项目内部的jenkinsfile仅调用在共享库中定义的定义实际管道的方法。因此,仅需在单个点上进行更改即可影响多个项目。 我想知道gitlab ci是否也可以做到?据我发现,无法在存储库外部定义gitlab- ci.yml。还有另一种定义管道并与几个项目共

  • 我在AWS中使用Terraform部署了一个基础设施。这个基础设施可以部署到不同的环境中,我使用的是工作区。 部署中的大多数组件应该为每个工作区分别创建,但我有几个关键组件希望在它们之间共享,主要是: IAM角色和权限 例如: 第一个资源是一个IAM角色,应该在该Lambda的所有实例中共享,并且不应该重新创建多次。 第二个资源是Lambda函数,其名称取决于当前工作区,因此每个工作区将部署并跟踪

  • 我从我的. jar文件运行多个作业。我想在我的工作之间共享状态。但所有输入在每个工作中消耗(来自kafka)并生成重复输出。我看到我的闪烁面板。所有的工作“记录发送”是3。我认为必须将数字拆分到我的工作。 我使用此命令创建作业 我怎样才能修复它?

  • 设置容器要使用的卷数组。可以使用卷在服务或作业中的其他步骤之间共享数据。可以在主机上指定命名Docker卷、匿名Docker卷或绑定挂载。 工作流程 第一个作业(build)有一个build目录,但当第二个作业(deploy)运行时,它没有,只包含源代码。 这个项目是一个mono repo,我试图部署的代码位于路径,因此所有标志。

  • 问题内容: 是否有个好方法可以在Gunicorn工人之间共享多处理锁?我正在尝试用Flask写一个json API。一些API调用将与管理正在运行的进程的python类交互(例如用于视频转换的ffmpeg)。当我将网络工作者的数量增加到超过1个时,如何确保只有1个工作者同时与班级互动? 我最初的想法是使用multiprocessing.Lock,以便start()函数可以是原子的。我认为我没有找到

  • 问题内容: 我有一些称为的数据,该数据位于三个孩子的父对象的范围内: 在这三个指令之间共享的最佳方法是什么?选项包括: 使用隔离的范围传递三遍,从而跨四个范围复制它 让子指示继承父范围,并找到,或在 把上并注入到这一点的子指示 还是有另一种更好的方法? 问题答案: 您可以创建一个工厂,该工厂可以传递给每个指令或控制器。这样可以确保在任何给定时间只有一个数组实例。编辑:这里唯一的陷阱是确保您在指令作

  • 我要的是这种行为: 当然,当我打印时真正发生的是: 显然,它们在类中共享数据。我如何获得单独的实例来实现我想要的行为?

  • 问题内容: 我想将一些数据从一个HTML页面发送到另一HTML页面。我通过类似的查询参数发送数据 。这种方法的问题在于数据保留在URL中。是否有其他方法可以使用JavaScript或jquery在HTML页面之间发送数据。 问题答案: 为什么不将值存储在HTML5存储对象(例如或)中,请访问HTML5存储文档以获取更多详细信息。使用此功能,您可以在本地临时/永久存储中间值,然后在以后访问您的值。