Перелік завдань перед випуском
Цей документ є офіційною інструкцією щодо процедури затвердження та публікації.
Умови, що перешкоджають випуску
Випуск заблоковано, якщо хоча б одна з наведених нижче умов не виконується:
- Відсутні маркери конфліктів під час об’єднання у відстежуваних файлах коду/документації.
- Перевірки відповідності назв гігієнічним нормам успішно пройдено для публічних документів.
- Налаштуйте/виконайте перевірки цілісності збірки (
cmake -S . -B ...таcmake --build ... --target sima_neat). - Перевірка посилань у документації успішно завершена в режимі суворого контролю (
DOCS_STRICT_LINKS=1). - Робоча копія очищена після виконання етапів генерації.
- Відсутність невирішених проблем, пов’язаних із помилками та некоректною роботою, перед відправленням змін і в релізних версіях.
- Перевірки на виявлення помилок, коректність, стійкість до навантажень і наявність вразливостей успішно пройдені у поточній версії.
- Охоронний бар’єр біля сховища моделей має зелений колір (
model-archive-security-gate). - Встановіть зелений димовий клапан (
install-smoke). - Тест на виявлення погіршення продуктивності успішно пройдено (
perf-regression-gate). - Стабільність каналу тестування на тривалий термін підтверджено, можна випускати версії (
soak-weekly). - Для версій-кандидатів на випуск «зелена зона» в системі фаззінг-тестування (
fuzz-nightly). - Для суворих тестових смуг використовується зелений
zero-skip-gate, що дозволяє пропускати всі об’єкти. - Необхідні файли для керування присутні та дійсні:
.github/CODEOWNERS.github/PULL_REQUEST_TEMPLATE.mdCONTRIBUTING.mddocs/develop-apps/contribute/release-checklist.md
- Метадані для релізу завершено:
project(SimaNeat VERSION x.y.z)оновлено у файліCMakeLists.txt.package-versionтаplatform-versionоновлюються у файліdeps/manifest.jsonза потреби.modelzoo-versionявно обирає перевірену версію Model Zoo, якщо вона відрізняється відplatform-version; якщо цей параметр не вказано, для Model Zoo буде використано значення за замовчуваннямplatform-version.abi-versionу файліdeps/manifest.jsonзбільшується кожного разу, коли змінюється структура публічного типу C++. експортовані зміни в бінарному контракті несумісні; всі програми, написані мовою C++, і бібліотеки Python перекомпілюються з урахуванням цього ABI.- У файлі
CHANGELOG.mdє запис## [x.y.z]. - примітки до випуску, підготовлені в розділі «release/tag»
У процесі підготовки до релізу не допускається наявність списку «відомих проблем, що спричиняють збої». Будь-яка регресія, яка призводить до збоїв, блокує випуск, доки її не буде виправлено.
Необхідні перевірки статусу
Наступні перевірки є обов’язковими для чернеток змін, що подаються для релізу, та тегів релізу:
repo-hygieneconfigure-build-sanitydocs-link-checkcrash-correctness-gatemodel-archive-security-gateinstall-smokeperf-regression-gatezero-skip-gatesoak-weekly(обов’язково для тегів, що використовуються для випуску версій).fuzz-nightly(необхідно для версій-кандидатів на випуск)stress-gateasan-ubsan-gaterelease-policy-check
Ці перевірки реалізовано в:
.github/workflows/release-gate.yml.github/workflows/test-crash-correctness-nightly.yml.github/workflows/model-archive-security.yml.github/workflows/install-smoke.yml.github/workflows/perf-regression.yml.github/workflows/zero-skip.yml.github/workflows/test-soak-weekly.yml.github/workflows/long-tests-weekly.yml.github/workflows/vulcan-fuzz-nightly.yml.github/workflows/test-stress-nightly.yml.github/workflows/sanitizers.yml
Забезпечте унікальність виконання кожної операції, щоб уникнути повторень:
- Непублічні запити на внесення змін (PR) у гілку
mainзапускають перевіркиmodel-archive-security,install-smoke,perf-regressionтаzero-skipу межах їхніх окремих робочих процесів. - Запити на внесення змін для релізів (
release/*, головні гілки) і гілки релізів (release/**,v*) запускають ті самі процеси з файлу.github/workflows/release-gate.yml.
Захист гілок і тегів у GitHub
Налаштуйте параметри репозиторію GitHub:
- Захистіть
main:- Вимагайте створення запиту на злиття перед об’єднанням.
- Необхідно отримати схвалення від принаймні одного відповідального за код (рекомендується отримувати схвалення від двох, якщо це можливо).
- Відхиляйте застарілі підтвердження для нових змін.
- Забезпечте виконання всіх необхідних перевірок статусу.
- Заборонити примусове надсилання змін.
- Використовуйте лише метод «сквош» або лінійну структуру історії змін.
- Захистіть теги
v*, щоб обмежити коло користувачів, яким дозволено створювати теги для релізів.
Процес випуску оновлень
- Виріжте
release/x.y.zіз зеленогоmain. - Заморозьте об’єднання змін, які не призначені для випуску нової версії.
- Запустіть робочий процес перевірки релізів у гілці релізів.
- Створіть
vX.Y.Z-rcNтег(и) для перевірки кандидатів. - Перемістіть до остаточної
vX.Y.Zмітки. - Швидко перенесіть зміни з гілки для випуску назад до гілки
main. - Опублікуйте примітки до випуску та інформацію про питання, що виникли після випуску.
Оперативні примітки
- Не звільняйте гілки від бруду.
- Не допускається випуск версії, що містить код, який не було перевірено.
- Не здійснюйте випуск, якщо обов’язкові перевірки не пройдено (показано червоним кольором).
- Не дозволяється примусове завантаження змін, якщо локальна перевірка на наявність помилок/відповідність вимогам не пройдена.
- Не передбачено жодного способу ручного обходу системи у разі виникнення проблем із дотриманням санітарних норм.
Угода щодо регресії продуктивності
- Точка входу для перевірки продуктивності:
scripts/ci/run_perf_regression_gate.sh. - Базові значення визначаються в межах профілю
tests/perf/baselines/v2/modalix_default/:profile.jsonвизначає фіксований контракт для середовища Modalix.- один файл сценарію на кожен ідентифікатор сценарію (
<scenario_id>.json).
- Необхідні сценарії:
runtime_session_sync_rgbruntime_session_async_rgbruntime_graph_fanoutruntime_graph_join_bundleruntime_codec_mjpeg_decoderuntime_codec_h264_decoderuntime_codec_h265_decoderuntime_model_archive_load
- Під час кожного запуску тестування продуктивності створюються файли результатів для кожного сценарію в
build-perf-gate/perf_results/. - Кожен результат має містити:
scenario_idmodalix_profile_idstatusfailure_classreason_codemetricsrun_metatimestamp
- Будь-яка класифікація, що відповідає критеріям
REGRESSION,HARNESS_ERRORабоENV_BROKEN, блокує смугу руху.