2017-03-16 55 views
0

我在gitlab上有三個項目A,B,C和一個gitlab-runner機器。項目A包含調用腳本構建程序時,有一個提交放在gitlab-ci.yml文件:當一個提交推送到另一個項目時觸發一個項目的構建

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

A依賴於B和C項目。在B或C上有提交時,如何觸發A上的構建。我不能將B,C放入A中,並且無法輕鬆將build-platform.sh轉換爲gitlab-ci.yml文件語法。

回答

4

有幾種方法可以做你想做的事情,但是他們都依賴於你將項目A的設置放在gitlab中並添加一個觸發器標記。這是通過<project A's gitlab URL>/settings/ci_cd頁面通過點擊Add trigger中的觸發器部分完成的。

您還會發現在該頁面中使用該觸發器令牌的不同方式。

爲了完整起見,這裏有幾個有提到的方法:

1使用捲曲

如果你能在項目B或C的構建結束使用捲曲則只需添加以下:

curl -X POST \ 
    -F token=TOKEN \ 
    -F ref=REF_NAME \ 
    <gitlab_url>/api/v3/projects/1/trigger/builds 

其中token是你剛纔對項目A和REF_NAME產生的觸發令牌是一個分支或標記的運行構建的名稱。

如果您有項目B和C的自動構建(例如使用.gitlab-ci.yml文件),則可以完成此操作。

2使用網絡掛接

您可以通過這些項目的設置/集成頁面中添加網絡掛接到項目B和C。

只需添加上推動事件的以下網絡掛接:

<gitlab_url>/api/v3/projects/1/ref/REF_NAME/trigger/builds?token=TOKEN 

其中token和REF_NAME是與上面相同。

相關問題