|
1 |
| -# Сборка и тестирование с использованием Ya Make |
| 1 | +# Сборка и тестирование YDB с использованием Ya Make |
2 | 2 |
|
3 |
| -В данный момент эта статья доступна только в англоязычном варианте. |
| 3 | +**Ya Make** - это система сборки и тестирования, исторически используемая для разработки YDB. Изначально разработанная для C++, теперь она поддерживает ряд языков программирования, включая Java, Go и Python. |
| 4 | + |
| 5 | +Язык конфигурации сборки **Ya Make** является основным для YDB, с файлом `ya.make` в каждом каталоге, представляющем таргеты Ya Make. |
| 6 | + |
| 7 | +Настройте среду разработки, как описано в статье [Работа над изменениями - Настройка окружения](suggest-change.md#envsetup) для работы с `Ya Make`. |
| 8 | + |
| 9 | +## Выполнение ваших команд {#run_ya} |
| 10 | + |
| 11 | +В корневом каталоге репозитория YDB расположен скрипт `ya` для запуска команд `Ya Make` из командной строки. Его можно добавить в переменную окружения PATH, чтобы он запускался без указания полного пути. Для Linux/Bash и репозитория GitHub, склонированного в `~/ydbwork/ydb`, можно использовать следующую команду: |
| 12 | + |
| 13 | +``` |
| 14 | +echo "alias ya='~/ydbwork/ydb/ya'" >> ~/.bashrc |
| 15 | +source ~/.bashrc |
| 16 | +``` |
| 17 | + |
| 18 | +Запуск `ya` без параметров выводит справку: |
| 19 | + |
| 20 | +``` |
| 21 | +$ ya |
| 22 | +Yet another build tool. |
| 23 | +
|
| 24 | +Usage: ya [--precise] [--profile] [--error-file ERROR_FILE] [--keep-tmp] [--no-logs] [--no-report] [--no-tmp-dir] [--print-path] [--version] [-v] [--diag] [--help] <SUBCOMMAND> [OPTION]... |
| 25 | +
|
| 26 | +Options: |
| 27 | +... |
| 28 | +
|
| 29 | +Available subcommands: |
| 30 | +... |
| 31 | +``` |
| 32 | + |
| 33 | +Подробная справка по любой подкоманде может быть получена её запуском с флагом `--help`, например: |
| 34 | + |
| 35 | +``` |
| 36 | +$ ya make --help |
| 37 | +Build and run tests |
| 38 | +To see more help use -hh/-hhh |
| 39 | +
|
| 40 | +Usage: |
| 41 | + ya make [OPTION]... [TARGET]... |
| 42 | +
|
| 43 | +Examples: |
| 44 | + ya make -r Build current directory in release mode |
| 45 | + ya make -t -j16 library Build and test library with 16 threads |
| 46 | + ya make --checkout -j0 Checkout absent directories without build |
| 47 | +
|
| 48 | +Options: |
| 49 | +... |
| 50 | +``` |
| 51 | + |
| 52 | +Скрипт `ya` загружает при запуске необходимые артефакты, зависящие от платформы, и кэширует их локально. Периодически скрипт обновляется ссылками на новые версии артефактов. |
| 53 | + |
| 54 | +## Настройка IDE {#ide} |
| 55 | + |
| 56 | +При использовании IDE для разработки доступна команда `ya ide`, которая помогает создать проект с преднастроенными инструментами. Поддерживаются следующие IDE: goland, idea, pycharm, venv, vscode (multilanguage, clangd, go, py). |
| 57 | + |
| 58 | +Перейдите в каталог в исходном коде, который должен быть корневым для вашего проекта. Запустите команду `ya ide`, указав имя IDE, и целевой каталог для записи конфигурации проекта IDE в параметре `-P`. Например, для работы с изменениями библиотеки YQL в vscode вы можете запустить следующую команду: |
| 59 | + |
| 60 | +``` |
| 61 | +cd ~/ydbwork/ydb/библиотека/yql |
| 62 | +ya ide vscode -P=~/ydbwork/vscode/yqllib |
| 63 | +``` |
| 64 | + |
| 65 | +Теперь можно открыть `~/ydbwork/vscode/yqllib/ide.code-workspace` из vscode. |
| 66 | + |
| 67 | +## Сборка таргета {#make} |
| 68 | + |
| 69 | +В `Ya Make` есть 3 основных типа таргетов: программа, тест и библиотека. Чтобы собрать таргет, запустите `ya make` с именем каталога. Например, для сборки YDB CLI запустите: |
| 70 | + |
| 71 | +``` |
| 72 | +cd ~/ydbwork/ydb |
| 73 | +ya make ydb/apps/ydb |
| 74 | +``` |
| 75 | + |
| 76 | +Вы также можете запустить `ya make` из каталога таргета без параметров: |
| 77 | + |
| 78 | +``` |
| 79 | +cd ~/ydbwork/ydb/ydb/apps/ydb |
| 80 | +ya make |
| 81 | +``` |
| 82 | + |
| 83 | +## Запуск тестов {#test} |
| 84 | + |
| 85 | +Запуск команды `ya test` в каком-либо каталоге создаст все бинарные файлы тестов, расположенные внутри его подкаталогов, и запустит тесты. |
| 86 | + |
| 87 | +Например, для запуска small тестов YDB Core запустите: |
| 88 | + |
| 89 | +``` |
| 90 | +cd ~/ydbwork/ydb |
| 91 | +ya test ydb/core |
| 92 | +``` |
| 93 | + |
| 94 | +Для запуска medium и large тестов добавьте опции `-tt` и `-ttt` к вызову `ya test` соответственно. |
0 commit comments