GitLab:多项目管道中的作业工件

时间:2020-05-03 17:31:55

标签: gitlab gitlab-ci pipeline gitlab-api

一段时间以来,我一直在尝试学习多项目管道,除了GitLab文档外,我还没有找到任何学习资料。如果我能看到一个例子,那将真的有帮助。我一直在项目A中的多项目管道中使用以下ci config,但无法正常工作:

trigger_job:
  stage: trigger_release  
  trigger:
    project: https://<gitlab-site>/api/v4/projects/<project-B-id>/trigger/pipeline
    branch: master
    strategy: depend

这将使项目A中的管道永远处于挂起状态。我通过以下方式使用curl来使配置正常工作:

trigger_job:
  stage: trigger_release 
  script:
    - curl --request POST --form "token=$CI_JOB_TOKEN" --form ref=master https://<gitlab-site>/api/v4/projects/<project-B-id>/trigger/pipeline

但是,我真正需要的是在触发的作业完成之后,在项目A管道中收集并使用项目B管道的工件。我该怎么办?

1 个答案:

答案 0 :(得分:1)

从 Gitlab 11.8 开始。您不需要使用 API 来触发管道,see official documentation

例子

让我们让组 mygroup 有 2 个存储库:myrepository1myrepository2

repository1

中的配置
trigger-job:
  trigger:
    project: mygroup/myrepository2
    branch: master
  variables:
    VARIABLE_TO_PASS: $CI_COMMIT_REF_NAME

repository2

中的配置
job-waiting-for-trigger:
  stage: deploy
  variables:
  script:
    - echo "${VARIABLE_TO_PASS} from another project pipeline"
  only:
    - pipelines

我没有试过这个代码,但它应该是正确的。