Поместите пять jobs в одну стадию prepare, а pytest — в следующую test. GitLab начнёт следующую стадию после успешного завершения предыдущей, если не изменить зависимости через needs.
Перед тестами нужно выполнить пять разных job подготовки окружения. Как в GitLab CI запустить их параллельно, а job с pytest — только после завершения всех job первой стадии?
Поместите пять jobs в одну стадию prepare, а pytest — в следующую test. GitLab начнёт следующую стадию после успешного завершения предыдущей, если не изменить зависимости через needs.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Поместите пять jobs в одну стадию prepare, а pytest — в следующую test. GitLab начнёт следующую стадию после успешного завершения предыдущей, если не изменить зависимости через needs.
Пример с условными скриптами проекта:
stages: [prepare, test]
prep1:
stage: prepare
script: ./prepare-1.sh
prep2:
stage: prepare
script: ./prepare-2.sh
prep3:
stage: prepare
script: ./prepare-3.sh
prep4:
stage: prepare
script: ./prepare-4.sh
prep5:
stage: prepare
script: ./prepare-5.sh
tests:
stage: test
script: pytest
Фактическая параллельность зависит от доступных runners. Jobs не разделяют файловую систему автоматически: результаты передают artifacts или готовят доступное всем изолированное окружение. Скрипты не должны конфликтовать за один ресурс.