[Gitlab CI] 在pipelines中使用API取得artifacts


STORY

在寫gitlab-ci.yml時, 可能會碰到當前的project依賴於其他project的artifacts,
才能把自己Build起來的情況, 這時候就可以利用Gitlab API這個功能.

DESCRIPTION

下面是gitlab-ci.yml的部分描述

jobname:
  stage: build
  script:
    - You need another project artifacts for your job

使用下列API滿足需求:

    curl --location --output {{ArtifactName.zip}} --header "JOB-TOKEN: $CI_JOB_TOKEN" "http://{{IP}}/api/v4/projects/{{PID}}/jobs/artifacts/{{BranchName}}/download?job={{JobName}}"

其中$CI_JOB_TOKEN是在Run job時, 預設就有token.




若想在Local試試有沒有成功載到artifact可以使用下列API:

    curl --output {{ArtifactName.zip}} --header "PRIVATE-TOKEN: {{TOKEN}}" "http://{{IP}}/api/v4/projects/{{PID}}/jobs/artifacts/{{BranchName}}/download?job={{JobName}}"

把--location拿掉, 並且header改為PRIVATE-TOKEN, 而TOKEN為gitlab user access token,
可在下列步驟申請到 =>

  1. 右上角settings

  2. 左邊點選Access tokens

  3. 根據Scope點下去

  4. 產生token

NOTE:

  1. 在Build的過程中, 如果pipelines沒有結束, 即使job已經產生artifacts也是拿不到的.
  2. 如果pipelines最後Build結果是failed, 也會拿不到artifacts.

REFERENCE:

#gitlab, ci







Related Posts

Android 時間格式轉換筆記

Android 時間格式轉換筆記

r3:0 異世界網站挑戰 - 破關紀錄

r3:0 異世界網站挑戰 - 破關紀錄

[第九週]  PHP 與 MySQL 的互動:讀取資料

[第九週] PHP 與 MySQL 的互動:讀取資料






Comments