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,
可在下列步驟申請到 =>
右上角settings
左邊點選Access tokens
根據Scope點下去
產生token
NOTE:
- 在Build的過程中, 如果pipelines沒有結束, 即使job已經產生artifacts也是拿不到的.
- 如果pipelines最後Build結果是failed, 也會拿不到artifacts.