когда: вручную в нисходящем трубопроводе приводит к тому, что восходящий поток сообщает об ошибке - PullRequest
1 голос
/ 01 августа 2020

Я использую многопроектный конвейер, чтобы отделить свои сквозные тесты от основного кода приложения. Завершение конечных тестов, если я запустил полный комплект, может занять значительное время. Я красиво разбил их на различные группы, используя pytest и его функцию mark.

Я хотел бы иметь возможность запускать определенные c сценарии ios из конвейера, установив каждый из этих сценариев от ios до when: manual. К сожалению, как только я добавляю это, дочерний конвейер сообщает об ошибке родителю, и прогресс останавливается. Я могу вручную запустить каждый раздел, как и ожидалось, но даже в этом случае родительскому конвейеру не сообщается об успехе.

Пример конвейера GitLab

Это пример конвейера. Шаг Integration Tests сообщил об ошибке, и я вручную запустил Fast Tests из нисходящего конвейера. Он прошел, и как единственное задание в конвейере проходит весь последующий трубопровод. Тем не менее, родительский объект по-прежнему сообщает об ошибке, поэтому Deploy не запускается.

Если я удалю when: manual из нисходящего конвейера, Integration Tests запустит полный набор тестов, пройдет успешно, а Deploy будет двигайтесь дальше, как ожидалось.

Это конвейер родительского проекта.

image: "python:3.7"

before_script:
  - python --version
  - pip install -r requirements.txt
  - export PYTHONPATH=${PYTHONPATH}:./src
  - python -c "import sys;print(sys.path)"

stages:
  - Static Analysis
  - Local Tests
  - Integration Tests
  - Deploy

mypy:
  stage: Static Analysis
  script:
    - mypy .

flake8:
  stage: Static Analysis
  script:
    - flake8 --max-line-length=88

pytest-smoke:
  stage: Local Tests
  script:
    - pytest -m smoke

pytest-unit:
  stage: Local Tests
  script:
    - pytest -m unittest

pytest-slow:
  stage: Local Tests
  script:
    - pytest -m slow

pytest-fast:
  stage: Local Tests
  script:
    - pytest -m fast

int-tests:
  stage: Integration Tests
  trigger:
    project: andy/gitlab-integration-testing-integration-tests
    strategy: depend

deploy:
  stage: Deploy
  when: manual
  script:
    - echo "Deployed!"

Конвейер сквозных тестов выглядит следующим образом:

image: "python:3.7"

before_script:
  - python --version
  - pip install -r requirements.txt
  - export PYTHONPATH=${PYTHONPATH}:./src
  - python -c "import sys;print(sys.path)"

stages:
  - Fast Tests

pytest-smoke:
  stage: Fast Tests
  when: manual
  script:
    - pytest -m smoke

Как я могу выборочно (вручную) запускать последующие задания и сообщать об успехе родительскому конвейеру? Без when: manual на последнем этапе сквозного (нисходящего) конвейера он работает именно так, как я хочу. Но в реальном мире, который у меня есть, я не хочу проводить непрерывные тесты для всего. Обычно выбирается сценарий ios.

Сейчас я использую: GitLab Enterprise Edition 13.2.2-ee

...