.. _ru_build_virtual: Создание сборок с помощью виртуальных машин =========================================== Для создания бинарных сборок под Linux используются виртуальные машины, благодаря чему можно создавать сборки как для 32-битных версий Linux, так и для 64-битных. Для работы с виртуальными машинами должны быть установлены VirtualBox_, Vagrant_ и Ansible_. Работа с виртуальными машинами осуществляется через команды Fabric_ (см. раздел :ref:`ru_fabfile_vm`). Виртуальная машина запускается в VirtualBox и управляется с помощью Vagrant. Ansible используется для того, чтобы настроить виртуальные машины для работы, закачать по сети на них исходные коды OutWiker, запустить создание бинарной сборки и скачать полученные файлы на целевую машину (на хост). Для создания бинарных сборок используется Ubuntu 17.04. Для сборки не используется Ubuntu 16.04 LTS, поскольку в этой версии Ubuntu есть проблемы с wxPython, о чем можно прочитать у меня `в блоге `_. Файлы для работы с виртуальными машинами расположены в папке :file:`need_for_build/virtual/build_machines/` исходных кодов. В папке :file:`need_for_build/virtual/build_machines/zesty_32` находится Vagrantfile 32-битной версии Ubuntu, а в :file:`need_for_build/virtual/build_machines/zesty_64` находится Vagrantfile 64-битной версии Ubuntu. Прежде чем запускать сборку на виртуальных машинах, нужно создать и подготовить виртуальные машины. Для этого нужно выполнить команду. .. code:: fab vm_prepare Виртуальные машины будут созданы с помощью Vagrant, при этом будет скачан образ виртуальной машины. Этот процесс может занять достаточно много времени (более 10 минут) и скачать большой объем данных (сотни мегабайт). Эту операцию нужно делать только один раз, если вы уже создали виртуальную машину, то подготавливать ее к сборке не требуется, если только вы не удалили виртуальную машину с помощью команды .. code:: vagrant destroy Команду `vagrant destroy` нужно выполнять в папках :file:`need_for_build/virtual/build_machines/zesty_32` и :file:`need_for_build/virtual/build_machines/zesty_64`, fab-команды для данной операции пока не создано. Еще один случай, когда может понадобиться выполнить команду `fab vm_prepare` - это если для сборки OutWiker понадобится установить какой-то новый пакет в операционную систему. Для запуска сборки **нестабильной** версии OutWiker на виртуальных машинах нужно выполнить команду .. code:: fab vm_linux_binary Для запуска сборки **стабильной** версии OutWiker на виртуальных машинах нужно выполнить команду .. code:: fab vm_linux_binary:1 Эта команда сначала запустит виртуальные машины, установит необходимые python-библиотеки из файлов :file:`requirements.txt` и file:`requirements_dev.txt`, закачает на виртуальные машины исходные коды, запустит на них создание бинарных сборок с помощью команды `fab linux_binary` (см. раздел :ref:`ru_fabfile_linux`) и скачает полученные файлы с виртуальных машин. Если все пройдет без ошибок, то в папке :file:`build/x.x.x.xxx/linux` появятся файлы: * :file:`outwiker_linux_amd64.7z` и :file:`outwiker_linux_amd64.zip` - архивы с 64-битными бинарными сборками, упакованными с помощью архиваторов 7z и zip соответственно. * :file:`outwiker_linux_i386.7z` и :file:`outwiker_linux_i386.zip` - архивы с 32-битными бинарными сборками, упакованными с помощью архиваторов 7z и zip соответственно. * :file:`outwiker-x.x.x+xxx_amd64.deb` - deb-пакет с 64-битной бинарной сборкой. * :file:`outwiker-x.x.x+xxx_i386.deb` - deb-пакет с 32-битной бинарной сборкой. Для останова всех виртуальных машин используйте команду .. code:: fab vm_stop или .. code:: fab vm_halt Эти две команды аналогичны. После создания бинарных сборок на виртуальных машинах с помощью команды `fab vm_linux_binary` виртуальные машины не останавливаются и продолжают занимать оперативную память пока вы их не остановите с помощью указанных выше команд. .. _VirtualBox: https://www.virtualbox.org/ .. _Vagrant: https://www.vagrantup.com/ .. _Ansible: https://www.ansible.com/ .. _Fabric: http://www.fabfile.org/