触发标签和手动作业的跨项目管道

Trigger cross-project-pipelines for tags and manual jobs

Gitlab 的跨项目管道允许我 specify a branch 到 运行 一个管道。我没有找到任何这样的选项来对标签做同样的事情?

由于我的跨项目管道也被故意 运行,是否也可以 运行 下游管道中的所有手动作业?

Triggering pipelines through the API.

应该可以做到这一点

您只需将以下内容添加到您的 CI 脚本中:

- curl --request POST --form "token=$CI_JOB_TOKEN" --form ref=master https://gitlab.example.com/api/v4/projects/<project-id>/trigger/pipeline

并将 ref 更新为您需要的标签,并 <project-id> 使用您正在触发的项目。


就跨项目管道而言,故意 运行 并且在触发时有您想要 运行 的手动作业,您可能需要重新编写下游 CI 文件以允许这样做,例如:

上游 CI 文件:

build:
  stage: build
  script:
    - echo "Do some building..."
    # Trigger downstream project (tag v1.0.0), with a random variable
    - curl --request POST --form "token=$CI_JOB_TOKEN" \
        --form "variables[RANDOM_VARIABLE]=FOO" \
        --form ref=v1.0.0 https://gitlab.com/api/v4/projects/<project_id>/trigger/pipeline

下游CI文件:

.test:template:
  stage: test
  script:
    - echo "Running some test"

test:manual:
  extends:
    - .test:template
  when: manual
  except:
    - triggers

test:triggered:
  extends:
    - .test:template
  only:
    - triggers

因此,当触发作业是 运行 时,test:triggered 应该是您在管道中看到的唯一 test 作业。

有关详细信息,请参阅 only/except 文档。