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

PHA*_*PHA 2 gitlab gitlab-ci gitlab-ci-runner

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

  build:
  stage: build
  script:
    - ./build-platform.sh
Run Code Online (Sandbox Code Playgroud)

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

Jaw*_*wad 7

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

您还将找到从该页面使用该触发器令牌的不同方法.

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

1使用cURL

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

curl -X POST \
     -F token=TOKEN \
     -F ref=REF_NAME \
     <gitlab_url>/api/v3/projects/1/trigger/builds
Run Code Online (Sandbox Code Playgroud)

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

如果您有项目B和C的自动构建(.gitlab-ci.yml例如使用文件),则可以执行此操作.

2使用webhook

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

只需在推送事件中添加以下webhook:

<gitlab_url>/api/v3/projects/1/ref/REF_NAME/trigger/builds?token=TOKEN
Run Code Online (Sandbox Code Playgroud)

TOKEN和REF_NAME与上述相同.