Я пытаюсь получить последний артефакт сборки, используя curl
.Вот что я попробовал.
Сначала получите последний идентификатор конвейера:
curl -v -H "Content-Type: application/json" -H "PRIVATE-TOKEN: <my-token-here>" https://<project>/api/v4/projects/<project>/pipelines?per_page=1&page=1
Затем получите идентификатор задания на основе идентификатора конвейера, полученного ранее:
curl -sS --header "PRIVATE-TOKEN: <my-token-here>" "https://[redacted,host]/api/v4/projects/[redacted,project]/pipelines/<pipeline-id>/jobs" | jq '.[] | select(.name == "build-assets" and .status == "success" and .artifacts_file != null) | .id'
Наконец, получите артефакты дляbuild.zip
на основе идентификатора задания:
curl -sS --header "PRIVATE-TOKEN: <my-token-here>" "https://[redacted,host]/api/v4/projects/[redacted, project]/jobs/<JOB_ID>/artifacts" > build.zip
Эти шаги выше работают, но мне нужно достичь трех конечных точек (и обработать ответ JSON для каждого шага).
Я также прочиталв документации GitLab , что для этого есть одна конечная точка .Поэтому я также попробовал это:
curl -sS --header "PRIVATE-TOKEN: <my-token-here>" "https://<url>/<namespace>/<project>/-/jobs/artifacts/<refs>/download?job=<job_name>"
, но это всегда перенаправляет меня на страницу входа в систему, говоря следующее:
<html><body>You are being <a href="https://<url>/users/sign_in">redirected</a>.</body></html>
Есть ли более простой способ выполнить эту задачу?Или как использовать конечную точку, которая описана в документации выше?