GitLab CI получает последний артефакт - PullRequest
0 голосов
/ 21 мая 2019

Я пытаюсь получить последний артефакт сборки, используя 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>

Есть ли более простой способ выполнить эту задачу?Или как использовать конечную точку, которая описана в документации выше?

1 Ответ

2 голосов
/ 21 мая 2019

Загрузка скриптовых артефактов

Два метода.Второй вариант - это решение в вашем случае использования.

Из публичного проекта

curl -sS "https://<url>/<namespace>/<project>/-/jobs/artifacts/<refs>/download?job=<job_name>"

Примечание: я рад, что здесь вы не можете использовать свой личный токен, он зарезервирован для использования API ниже.

Gitlab doc: загрузка последних артефактов

Из частного проекта

curl -L --header "PRIVATE-TOKEN: 123456abcdef" "https://gitlab.com/api/v4/projects/awesome-organization%2Fawesome-group%2Fowesome-project/jobs/artifacts/master/download?job=publish-release"

Примечание 1: -l заставляет локон следоватьперенаправление, поскольку gitlab переместит вас в хранилище Google.
Примечание2: значение %2F является заменой косой черты в кодировке URL, если ваш проект является частью, группой или подгруппой в gitlab.

Gitlab api doc: загрузка последних артефактов

...