diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 0000000..cb3ebb8 --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,60 @@ +# Непрерывная проверка SDR Rover Link. +# +# Здесь выполняются только быстрые проверки: они должны укладываться в +# секунды. Лабораторные эксперименты сюда не помещаются — они длятся +# минутами, требуют исходных данных из data/raw и в части случаев +# подключённого PlutoSDR. Их запуск остаётся ручным. +# +# Оборудование конвейеру не нужно: устанавливается только расчётное +# окружение, без pyadi-iio и libiio. + +stages: + - gate + - test + - lint + +default: + image: python:3.13 + before_script: + - python --version + - python -m pip install --quiet --upgrade pip + - python -m pip install --quiet -r requirements.txt + cache: + key: "python-$CI_COMMIT_REF_SLUG" + paths: + - .cache/pip + +variables: + PIP_CACHE_DIR: "$CI_PROJECT_DIR/.cache/pip" + PYTHONIOENCODING: "utf-8" + +# Дешёвый шлюз: синтаксис всех файлов, импорт protocol и функциональные +# проверки тех лабораторных, которым не нужны данные эксперимента. +# Выполняется первым, потому что ловит самые грубые поломки за секунду. +быстрый-шлюз: + stage: gate + script: + - python tools/quick_gate.py + +# Быстрые проверки ядра протокола. +тесты-ядра: + stage: test + script: + - python -m pytest tests/ -q --junitxml=report.xml + artifacts: + when: always + reports: + junit: report.xml + expire_in: 1 week + +# Проверка стиля. Пока не блокирует конвейер: в лабораторных Lab001–Lab041 +# принято своеобразное оформление с переносами аргументов, и приводить их +# к единому стилю сейчас означало бы тронуть 50 файлов с зафиксированными +# результатами. Ограничение снимается, когда договоримся о правилах. +стиль: + stage: lint + allow_failure: true + before_script: + - python -m pip install --quiet ruff + script: + - ruff check protocol/ tests/ tools/