gitlab-ci 跑步者中具有不同到期时间的多条路径

Multiple paths with different expiry time in gitlab-ci runners

我在使用 Gitlab-CI 解析阶段之间的 build 目录时遇到问题。

Gitlab-CI 擦除阶段之间创建的构建工件,这看起来很奇怪。我试图在构建和测试阶段之间存储构建工件,但是构建阶段也有我想要保留的构建工件以及 运行 下一阶段所需的构建工件。

是否可以使用 artifacts 选项设置不同路径的多个到期时间?

我尝试了以下方法,它只保留 paths 的第二个定义(build/test* 路径),而不是声明的第一个 paths (.dmg)。

  artifacts:
    paths:
    - build/*.dmg
    expire_in: 1 week
    paths:
    - build/test1
    - build/test2
    - build/test3
    expire_in: 15 mins

我已尝试使用 caches,但似乎无法正常工作...如有任何建议,我们将不胜感激!

根据文档,这似乎是不可能的,但我需要做类似的事情,因此作为解决方法,我做了以下操作。

在生成所有工件的构建阶段,我为所有工件设置了 15 分钟的到期时间,包括应该有不同到期时间的工件。在你的情况下 build/*.dmg。所以我对构建部分的工件定义是这样的:

 artifacts:
    paths:
    - build/*.dmg
    - build/test1
    - build/test2
    - build/test3
    expire_in: 15 mins

之后,我在管道的下一阶段定义了两个作业。如果您同时执行此两个作业 运行。其中一项作业执行您最初打算对文件执行的操作:build/test1build/test2build/test3。管道这一阶段的其他作业在脚本部分应该几乎没有任何内容,可能类似于 echo "dummy job"。但是因为虚拟作业从上一个作业接收构建工件,我们可以使用它来 'change' 15 分钟到一周的到期时间,只需使用相同的文件创建第二个工件,如下所示:

artifacts:
    paths:
    - build/*.dmg
    expire_in: 1 week

这是一个糟糕的解决方法,因为它复制了目标工件,因为我们有一个过期时间为 15 分钟,另一个过期时间为 1 周。