В какой момент pipeline происходят тесты в GitLab CI?

«В какой момент pipeline происходят тесты в GitLab CI?» — вопрос из категории CI/CD, который задают на 23% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

В GitLab CI тесты выполняются на этапе (stage), который явно объявлен как test в конфигурационном файле .gitlab-ci.yml. Порядок этапов определяется списком stages. Например, типичный пайплайн может выглядеть так:

stages:
  - build
  - test
  - deploy

unit_tests:
  stage: test
  script:
    - echo "Running unit tests..."
    - go test ./...

integration_tests:
  stage: test
  script:
    - echo "Running integration tests..."
    - ./run-integration-tests.sh

Ключевые моменты:

  1. Этап test выполняется после успешного завершения этапа build (если он есть).
  2. Внутри одного этапа test можно запускать несколько джоб (как unit_tests и integration_tests) параллельно для ускорения.
  3. По умолчанию, если любой тест упадет, весь пайплайн останавливается, что предотвращает развертывание битого кода. Это поведение можно изменить с помощью allow_failure: true.
  4. Для тестов часто используются артефакты (бинарники, зависимости), собранные на этапе build.