不要在gitlab-ci中的不同体系结构之间共享工件

时间:2018-04-17 09:48:25

标签: docker gitlab-ci

我有一个项目,它构建在不同的docker环境中,并希望将工件传递到下一个阶段。 Gitlab-Ci混合了工件并将它们全部传递到下一步。怎么避免这个?

gitlab pipeline representation

我想应该有一种方法可以将构件从build_mt31传递给acceptance_mt31,并且对于mt32路径也是如此。 Gitlab将它们全部传递给所有兄弟姐妹:

Downloading artifacts for build_mt31 (6965)...
Downloading artifacts from coordinator... ok        id=6965 responseStatus=200 OK token=26sk7GBS
Downloading artifacts for build_mt32 (6966)...
Downloading artifacts from coordinator... ok        id=6966 responseStatus=200 OK token=7EDnce-d

这是我的.gitlab-ci.yaml文件:

stages:
  - build
  - acceptance

build_mt31:
  stage: build
  tags:
    - mt3.1
    - docker
  artifacts:
    untracked: true
    paths:
    - bld31/
  script:
    - rm -rf bld31
    - mkdir -p bld31
    - cd bld31
    - touch build_mt31

acceptance_mt31:
  stage: acceptance
  tags:
    - mt3.1
    - docker
  script:
    - cd bld31
    - ls -all

build_mt32:
  stage: build
  tags:
    - mt3.2
    - docker
  artifacts:
    untracked: true
    paths:
    - bld32/
  script:
    - rm -rf bld32
    - mkdir -p bld32
    - cd bld32
    - touch build_mt32

acceptance_mt32:
  stage: acceptance
  tags:
    - mt3.2
    - docker
  script:
    - cd bld32
    - ls -all

理想情况下,我不会使用bld31,32来调用具有相同名称的目录,但在当前设置中,它们会在传递到下一步时相互覆盖。

1 个答案:

答案 0 :(得分:7)

您想使用dependencies keyword,它允许您定义要在不同作业之间传递的工件。

例如,您可以像这样使用它:

acceptance_mt32:
  stage: acceptance
  dependencies:
    - build_mt32