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

时间:2017-09-15 14:29:25

标签: caching gitlab-ci gitlab-ci-runner artifacts

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

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

使用artifacts选项可以使用不同路径的多个到期时间吗?

我尝试了以下内容,它只保留paths(构建/测试*路径)的第二个定义,而不是第一个paths(.dmg)声明的定义。

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

我已尝试使用caches,但似乎无法正常工作......任何建议都会非常感谢!

1 个答案:

答案 0 :(得分:2)

根据文档,它似乎不可能,但我需要做类似的事情,以便我做了下面的解决方法。

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

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

之后我在管道的下一阶段定义了两个作业。如果这样做,则两个作业同时运行。其中一个作业完成了您最初用于文件的内容:build/test1build/test2build/test3。管道的这个阶段的另一个工作在脚本部分应该几乎没有,可能像echo "dummy job"。但是因为虚拟作业从前一个作业接收到构建工件,我们可以通过简单地使用相同的文件创建第二个工件来将其从15分钟“更改”到一周:

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

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