Конвейер модульных тестов - модульные тесты Django

Я работаю над проектом django и в нем 20+ приложений, что означает, что я должен запускать тесты для 20+ приложений, которые включают 3000+ тестов. Поэтому я решил сделать subjobs в моем pipeline и теперь запускаю 20 заданий для юнит-тестов при коммите. Но проблема в том, что когда более одного разработчика коммитит и тесты запускаются для обоих, конвейер застревает. Pipeline runners зарегистрированы на VM of 32 CPU cores and 24 GB of RAM. загрузка процессора становится 100% и задания застревают (deadlock).

Как оптимизировать подзадания конвейера, чтобы при работе нескольких разработчиков они не застревали.

 unit_test:
  stage: test
  rules:
    - changes:
      - backend/
  tags:
    - workstream-unit-test
  when: manual
  allow_failure: false
  parallel:
    matrix:
      - APP_NAME:
          - apps.app1
          - apps.app2
          - .
          - apps.app20
  before_script:
    - apt-get update
    - apt-get install -y unixodbc unixodbc-dev
    - pip install virtualenv
    - virtualenv venv
    - source venv/bin/activate
    - pip install -r requirements.txt
  script:
    - COVERAGE_FILENAME=$(echo "$APP_NAME" | tr '.' '_')_coverage.xml
    - coverage run --source=$APP_NAME ./manage.py test $APP_NAME --settings=hrdb.test_settings --keepdb --noinput
    - coverage xml -i -o $COVERAGE_FILENAME
    - coverage report -m --fail-under=90 --skip-covered
  coverage: '/(?i)TOTAL.*? (100(?:\.0+)?%|[1-9]?\d(?:\.\d+)?%)$/'
  artifacts:
    expire_in: 2 hour
    paths:
      - $CI_PROJECT_DIR/$APP_NAME_coverage.xml`

Я рассчитываю использовать ту же VM с теми же характеристиками, но с оптимизацией конвейера, чтобы процесс конвейера проходил гладко

Вернуться на верх