Передача артефактов между пайплайнами
Можно ли передать между двумя пайплайнами артефакты? Точнее мне нужно передать переменную. Т.е. не в рамках одного пайплайна, а между двумя пайплайнами
Есть 2 стадии: build, test. Но push выполняется уже после мерджа. Это обусловлено тем, что образ уезжает в реджистри только после ревью и мёрджа в мастер.
Ответы (1 шт):
Можно их через REST API вытаскивать, если знаешь номер пайплайна
https://docs.gitlab.com/ee/api/jobs.html#list-pipeline-jobs
https://docs.gitlab.com/ee/api/job_artifacts.html
SHA из последнего пайплайна для некоторой ветки
jq утилита для работы с JSON. Устанавливается отдельно. Для alpine - apk add jq
sed -n 1p - пайпобезопасный head -1
По умолчанию Гитлаб сортирует по id desc, поэтому отдельно сортировать выдачу pipelines?ref=xxx не надо.
# Ветка, последний успешный пайплайн которой, хотим найти
REF=AP-1
LATEST_SHA=$(curl -s -H "Private-Token: $TOKEN" $CI_API_V4_URL/projects/$CI_PROJECT_ID/pipelines?ref=$REF | jq '.[].sha' | sed -n 1p)
echo $LATEST_SHA
Код выше буквально возьмёт последний пайплайн для определённой ветки, даже если он завершился неудачно.
Если надо последний удачный, то надо организовавыть цикл по пайплайнам, запрашивать по одному по id и проверять статус.
Последний SHA для какой-то ветки, кстати, можно просто из гита взять
REF=AP-1
LATEST_SHA=$(git log -1 --pretty=%H origin/$REF)