使用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 楼

在SO上已经通过绕过工作的方式解决了这一问题,因为根据文档看来这似乎不可能。第1阶段:构建和存储所有工件。

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


第2.1阶段:使用工件build/test1, build/test2和工件进行下一个正式工作阶段(即在我的场景中运行测试)。 build/test3

test_stage:
  script:
    - test
  dependencies:
  - build


阶段2.2:与Stage 2.1并发运行时,您只能有一个空作业,但设置了新的工件到期日期。
overwrite_artifact_stage:
  script:
    - echo 'saving artifact'
  artifacts:
    paths:
    - build/*.dmg
    expire_in: 1 week


#2 楼

似乎您正在尝试全局定义工件,因为您要覆盖键的定义,因此无法使用多个路径。相反,您应该定义每个作业的路径。

工件:
expire_in:1周

build:buildjob
    paths:
    - build/test1
    - build/test2
    - build/test3
    expire_in: 15 mins

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


评论


我忘记在问题中提到我已经在一项工作中定义了它。我的“构建”作业同时构建了工件和“测试”工件,但是我不想缓存“测试”工件,因为在流水线之后没有清除缓存。

– Rekovni
17年9月21日在8:33