我有一个项目,它构建在不同的docker环境中,并希望将工件传递到下一个阶段。 Gitlab-Ci混合了工件并将它们全部传递到下一步。怎么避免这个?
我想应该有一种方法可以将构件从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来调用具有相同名称的目录,但在当前设置中,它们会在传递到下一步时相互覆盖。
答案 0 :(得分:7)
您想使用dependencies
keyword,它允许您定义要在不同作业之间传递的工件。
例如,您可以像这样使用它:
acceptance_mt32:
stage: acceptance
dependencies:
- build_mt32