Files
XC_VM/docs/ru/guides/dev-workflow.md
T
Divarion_D bdbcde97c7 docs: commit generated ru, translate locally before release (not in CI)
CI translation was slow, so move it out of GitHub Actions: docs/ru is now a
committed, generated tree refreshed LOCALLY before a release; CI only builds it.

- pages.yml: drop the setup-python/cache/translate steps — the workflow now just
  installs the build toolchain and runs `mkdocs build --strict` on the committed
  en+ru trees.
- .gitignore: stop ignoring docs/ru (now committed); keep site/ + .docs-cache/.
- Split deps: docs/requirements.txt = build only (mkdocs-material, static-i18n,
  used by CI); tools/docs/requirements.txt = translators (local-only).
- Makefile: docs-venv installs both; docs-build/docs-serve no longer translate
  (translation is the deliberate `make docs-translate` release step).
- updates_checklist.md: new "Regenerate translated documentation" step
  (make docs-translate + docs-build, commit docs/ru with the release commit).
- Commit the generated docs/ru (37 files, translators/yandex).

Rule: edit ONLY docs/en; docs/ru is generated — never hand-edit it.
2026-08-20 22:37:44 +03:00

7.0 KiB
Raw Blame History

Рабочий процесс разработки

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


Локальная настройка

Зафиксированный src/vendor/ предназначен ** только для производства **, поэтому инструменты разработки (PHPStan, PHP-CS-Fixer) отсутствуют в дереве. Установите их один раз из зафиксированной блокировки:

make dev-tools          # = cd src && composer install

Это добавит пакеты require-dev в src/vendor/. Никогда не фиксируйте их — зарегистрированный поставщик должен оставаться доступным только для производства (composer install --no-dev). .gitignore не допускает попадания пакетов разработчиков в git add и CI-шлюз (check-vendor-prod-only) завершается сбоем сборки, если она когда-либо была зафиксирована.

Проверка качества

Запустите их до того, как push — CI запустит тот же набор:

Команда Проверки
make phpstan Статический анализ по сравнению с зафиксированным базовым уровнем (сбой происходит только при появлении НОВЫХ проблем)
make cs Стиль кода — импорт/гигиена пространства имен (PHP-CS-Fixer, предварительный запуск)
make cs-fix Примените исправления стиля на месте
make gates PSR-4 регрессионные параметры (ниже)
php tools/.bin/phpunit.phar -c tests/phpunit.xml.dist Модульные тесты

@Для @0@@ и make cs нужны инструменты разработчика — сначала запустите make dev-tools.

make gates связывает трех охранников:

  • **проверка-процедурное использование ** - процедурные файлы / файлы просмотра импортируют каждый перенесенный класс, который они используют (PHP импортируется позиционно, поэтому use должен предшествовать использованию);
  • verify-lb-archive — сборка балансировщика нагрузки исключает привилегированный код (контроллеры администратора/реселлера, домен пользователя/устройства, команды установки/root).;
  • только для проверки поставщика - ни один пакет require-dev не зафиксирован в соответствии с src/vendor/.

Развертывание кода в VDS через SFTP

Для ежедневной разработки мы рекомендуем расширение SFTP для VS Code — редактировать локально, автоматически загружать при сохранении.

Установка

Создать .vscode/sftp.json:

[
    {
        "name": "My Dev VDS",
        "host": "YOUR_VDS_IP",
        "protocol": "sftp",
        "port": 22,
        "username": "root",
        "remotePath": "/home/xc_vm",
        "useTempFile": false,
        "uploadOnSave": true,
        "openSsh": false,
        "watcher": {
            "files": "**/*",
            "autoUpload": false,
            "autoDelete": true
        },
        "ignore": [
            ".vscode",
            ".git",
            ".gitattributes",
            ".gitignore",
            "update",
            "*pycache/",
            "*.gitkeep",
            "bin/",
            "config/",
            "tmp/"
        ],
        "context": "./src/",
        "profiles": {}
    },
    {
        "name": "My Dev VDS Tests",
        "host": "YOUR_VDS_IP",
        "protocol": "sftp",
        "port": 22,
        "username": "root",
        "remotePath": "/home/xc_vm/tests",
        "useTempFile": false,
        "uploadOnSave": true,
        "openSsh": false,
        "watcher": {
            "files": "**/*",
            "autoUpload": false,
            "autoDelete": true
        },
        "ignore": [
            ".vscode",
            ".git",
            ".gitattributes",
            ".gitignore",
            "tmp/",
            ".cache/"
        ],
        "context": "./tests/",
        "profiles": {}
    }
]

Основные настройки

  • context: "./src/" — сопоставляет местное src/ с удаленным /home/xc_vm/
  • context: "./tests/" — сопоставляет местное tests/ с удаленным /home/xc_vm/tests/
  • uploadOnSave: true — каждое сочетание клавиш Ctrl+S мгновенно переносит файл в VDS
  • ignore — защищает файлы, зависящие от сервера. (bin/, config/, tmp/)

** Безопасность:** Используйте SSH-ключи вместо пароля. Каталог .vscode/ находится в .gitignore, поэтому учетные данные не попадут в git.

Как синхронизировать папку с тестами

  1. Добавьте вторую запись SFTP с context: "./tests/" и remotePath: "/home/xc_vm/tests".
  2. Сохраняйте файлы под tests/ локально.
  3. Расширение загрузит их отдельно из src/ в /home/xc_vm/tests.
  4. Это необходимо, поскольку тесты хранятся за пределами src/ и не будут загружены основной записью.

Рабочий процесс

  1. Откройте проект в VS Code
  2. Отредактируйте любой файл под src/
  3. Если вы добавляете тест, отредактируйте файл в разделе tests/
  4. Сохранить — соответствующая запись SFTP загружает файл в VDS
  5. Запустите соответствующий тест на VDS
  6. Фиксация в git как обычно

Связанные файлы

Файл Роль
.vscode/sftp.json Локальная настройка → Настройка синхронизации VDS (gitignored)
Makefile make dev-tools, make phpstan, make cs, make gates
src/composer.json Зависимости + PSR-4 автозагрузка