6

我正在研究多管道项目,并使用trigger关键字触发下游管道,但无法传递在上游项目中创建的工件。我needs用来获取如下工件:

获取工件的下游管道块:

    needs:
        - project: workspace/build
          job: build
          ref: master
          artifacts: true

要触发的上游管道块:

    build:
      stage: build
      artifacts:
        paths:
          - ./policies
        expire_in: 2h
      only:
        - master
      script:
        - echo 'Test'
      allow_failure: false
    
    triggerUpstream:
      stage: deploy
      only:
        - master
      trigger:
        project: workspace/deploy

但出现错误:This job depends on other jobs with expired/erased artifacts:

不知道怎么回事,求大神帮忙。

4

3 回答 3

2

看起来在管道之间以及项目之间共享工件存在问题。这是已知的错误,并已在此处报告:

https://gitlab.com/gitlab-org/gitlab/-/issues/228586

您可以在那里找到解决方法,但由于它需要向项目添加访问令牌,因此它不是最佳解决方案。

于 2021-08-26T16:58:41.180 回答
0

您的上游管道作业“构建”设置为仅将其工件存储 2 小时(从该expire_in: 2h行开始。您的下游管道必须在创建工件后至少 2 小时运行,因此工件已过期并被删除,从而产生该错误.

要解决它,您可以将expire_in字段更新为您需要它们处于活动状态的时间(例如,如果您知道下游管道将在 5 天后运行,请将其设置为 5d 5 天),或者重新运行构建作业重新创建工件。

您可以从文档中阅读有关expire_in关键字和工件的更多信息

于 2021-02-24T17:58:36.787 回答
0

过期的工件不是问题,错误是不正确的。就我而言,我可以直接从已执行作业的 UI 中以 zip 格式下载工件。我expire_in的设置为1 week但我仍然收到此消息。

于 2021-05-07T19:36:39.400 回答