gitlab ci:传递来自同一阶段的两个作业的工件

时间:2020-03-29 10:24:41

标签: devops gitlab-ci pipeline

有一些多项工作(不是并行进行的),我正在尝试将工件从第一项工作传递给第二项工作。

这是什么样子:

    deploy-build-docker 1/2:
      stage: deploy
      image: docker:stable
      script:
      - ...
      artifacts:
        paths:
        - path

    deploy-preprod 2/2:
      stage: deploy
      image: alpine
      dependencies: [deploy-build-docker]
      script:
      -  ....

CI找不到依赖项,并给我这个错误deploy-preprod 2/2 job: undefined dependency: deploy-build-docker

我也尝试过deploydeploy-build-docker 1/2,但仍然遇到相同的问题。

那我该怎么做?我应该在另一个阶段进行构建吗?

1 个答案:

答案 0 :(得分:0)

是的,您只能传递上一个阶段的工件。

默认情况下,所有先前阶段的所有工件都被传递,但是您可以使用dependencies参数定义要从中获取工件的有限的作业列表(或没有作业)。

要使用此功能,请在作业的上下文中定义依赖关系,并传递应从中下载工件的所有先前作业的列表。您只能从当前阶段之前执行的阶段定义作业。如果您从当前阶段或下一个阶段定义作业,将显示错误。

https://docs.gitlab.com/ee/ci/yaml/#dependencies

尽管他们将来可能会增加对needs:的支持以在当前阶段引用工作:https://gitlab.com/gitlab-org/gitlab/issues/30632