GitLab 文档提到使用
needs:project
(https://docs.gitlab.com/ee/ci/yaml/#needsproject) 来指定从中获取工件的项目(和分支或其他内容),但是“工件是从指定参考的最新成功的指定作业中下载的”。
对于上游管道触发下游管道的情况来说,这看起来确实是错误的。后者不应该依赖(和下载)“最新成功”的工件,而是来自触发当前管道的特定管道的工件。
我是否误解了什么?有没有什么方法可以让它正确(即从正确的管道/作业下载工件,而不仅仅是从最新的东西下载工件)?
我找到了如何通过多项目管道来实现它。
# Job to trigger the pipeline of the downstream project and send the
downstream:
variables:
PARENT_COMMIT_REF_NAME: $CI_COMMIT_REF_NAME
trigger: your/downstream/projectB
$CI_COMMIT_REF_NAME
是为其构建项目的分支或标签名称。 预定义 CI/CD 变量参考
test:
stage: test
script:
- echo 'Fetching artifcats from upstream pipeline'
needs:
- project: andeo/immomyself/immomyself-api
job: build
ref: ${PARENT_COMMIT_REF_NAME_API:-master}
artifacts: true
通过这种方法,您可以从正确的管道/作业中获取工件