使用Gitlab作为CI/CD工具,有的情况下需要从一个项目中触发两一个项目的pipeline,例如这样的场景:Project A是某个服务,Project B是一个统一的自动化测试服务,我们需要在Project A部署完成之后,自动触发B的pipeline来做自动化测试。

其中的两种实现方式如下:

  1. 在 Project A中创建单独的job,通过gitlab的trigger关键字触发B的pipeline,只需要指定项目的路径以及对应的分支
TEST-STAGE:
  stage: test-stage
  trigger:
    project: path/project_b
    branch: master
  1. 从Project A中的某个job中通过脚本调用Project B的pipeline api 首先需要在B项目中设置一个trigger token,找到B项目的setting–>CI/CD–>Pipeline triggers,创建一个新的trigger,记住分配好的token

然后在Project A中的某个job下,执行如下的script:

curl --request POST --form "token=token_here" --form ref=master "https://gitlab.servername/api/v4/projects/project_id/trigger/pipeline

注意:通过ref参数指定分支名称;其中的project_id是Project B的id,可以在项目的页面中找到。