[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

React 的 controller component 與 uncontrolled

React 的 controller component 與 uncontrolled

[團隊協作] Simple Twitter 專案後端開發

[團隊協作] Simple Twitter 專案後端開發

Flex-grow / Flex-shrink / Flex-basis

Flex-grow / Flex-shrink / Flex-basis






Comments