Gitlab ci 问题是通过触发器将工件传递到下游管道并需要关键字

Ash*_*ngh 6 pipeline gitlab gitlab-ci gitlab-pipelines

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

获取工件的下游管道块:

needs:
    - project: workspace/build
        job: build
        ref: master
        artifacts: true
Run Code Online (Sandbox Code Playgroud)

要触发的上游管道块:

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
Run Code Online (Sandbox Code Playgroud)

但我收到以下错误:

This job depends on other jobs with expired/erased artifacts:
Run Code Online (Sandbox Code Playgroud)

我不确定出了什么问题。

Ada*_*all 0

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

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

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

  • 感谢您的回复,但也尝试过“expire_in:never”,但仍然是同样的问题。另外,错误的是它没有显示它丢失了哪个工件,所以只是想知道我是否在“需要”步骤中丢失了任何东西。 (3认同)