当提交推送到另一个项目时触发项目的构建

时间:2017-03-16 15:09:24

标签: gitlab gitlab-ci gitlab-ci-runner

我在gitlab上有一个带有gitlab-runner机器的三个项目A,B,C。项目A包含gitlab-ci.yml文件,该文件在A上提交时调用脚本来构建程序:

  build:
  stage: build
  script:
    - ./build-platform.sh

A取决于B和C项目。当在B或C上提交时,如何在A上触发构建。我不能将B,C放在A中,我不能轻易地将build-platform.sh转换为gitlab-ci.yml文件语法。

1 个答案:

答案 0 :(得分:6)

有几种方法可以做你想要的,但是它们都依赖于你在gitlab中设计A的设置并添加一个触发器令牌。这可以通过点击触发器部分中的RowEditEnded<project A's gitlab URL>/settings/ci_cd页面完成。

您还可以找到在该页面中使用该触发器令牌的不同方法。

为了完整起见,这里提到了一些方法:

1使用cURL

如果您可以在项目B或C的构建结束时使用curl,那么只需添加以下内容:

Add trigger

其中TOKEN是您刚为项目A生成的触发器令牌,REF_NAME是运行构建的分支或标记的名称。

如果你有项目B和C的自动构建(例如使用curl -X POST \ -F token=TOKEN \ -F ref=REF_NAME \ <gitlab_url>/api/v3/projects/1/trigger/builds 文件),就可以这样做。

2使用webhook

您可以通过这些项目的设置/集成页面向项目B和C添加webhook。

只需在推送活动中添加以下webhook:

.gitlab-ci.yml

TOKEN和REF_NAME与上述相同。