Перед тестами нужно выполнить пять разных job подготовки окружения. Как в GitLab CI запустить их параллельно, а job с pytest — только после завершения всех job первой стадии?

Поместите пять jobs в одну стадию prepare, а pytest — в следующую test. GitLab начнёт следующую стадию после успешного завершения предыдущей, если не изменить зависимости через needs.

Короткий ответ

Что ответить на собеседовании

Поместите пять 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 или готовят доступное всем изолированное окружение. Скрипты не должны конфликтовать за один ресурс.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее