Создание сборок с помощью виртуальных машин

Для создания бинарных сборок под Linux используются виртуальные машины, благодаря чему можно создавать сборки как для 32-битных версий Linux, так и для 64-битных. Для работы с виртуальными машинами должны быть установлены VirtualBox, Vagrant и Ansible.

Работа с виртуальными машинами осуществляется через команды Fabric (см. раздел Команды для создания бинарных сборок на виртуальных машинах).

Виртуальная машина запускается в VirtualBox и управляется с помощью Vagrant. Ansible используется для того, чтобы настроить виртуальные машины для работы, закачать по сети на них исходные коды OutWiker, запустить создание бинарной сборки и скачать полученные файлы на целевую машину (на хост).

Для создания бинарных сборок используется Ubuntu 17.04. Для сборки не используется Ubuntu 16.04 LTS, поскольку в этой версии Ubuntu есть проблемы с wxPython, о чем можно прочитать у меня в блоге.

Файлы для работы с виртуальными машинами расположены в папке need_for_build/virtual/build_machines/ исходных кодов. В папке need_for_build/virtual/build_machines/zesty_32 находится Vagrantfile 32-битной версии Ubuntu, а в need_for_build/virtual/build_machines/zesty_64 находится Vagrantfile 64-битной версии Ubuntu.

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

fab vm_prepare

Виртуальные машины будут созданы с помощью Vagrant, при этом будет скачан образ виртуальной машины. Этот процесс может занять достаточно много времени (более 10 минут) и скачать большой объем данных (сотни мегабайт). Эту операцию нужно делать только один раз, если вы уже создали виртуальную машину, то подготавливать ее к сборке не требуется, если только вы не удалили виртуальную машину с помощью команды

vagrant destroy

Команду vagrant destroy нужно выполнять в папках need_for_build/virtual/build_machines/zesty_32 и need_for_build/virtual/build_machines/zesty_64, fab-команды для данной операции пока не создано.

Еще один случай, когда может понадобиться выполнить команду fab vm_prepare - это если для сборки OutWiker понадобится установить какой-то новый пакет в операционную систему.

Для запуска сборки нестабильной версии OutWiker на виртуальных машинах нужно выполнить команду

fab vm_linux_binary

Для запуска сборки стабильной версии OutWiker на виртуальных машинах нужно выполнить команду

fab vm_linux_binary:1

Эта команда сначала запустит виртуальные машины, установит необходимые python-библиотеки из файлов requirements.txt и file:requirements_dev.txt, закачает на виртуальные машины исходные коды, запустит на них создание бинарных сборок с помощью команды fab linux_binary (см. раздел Сборка под Linux) и скачает полученные файлы с виртуальных машин.

Если все пройдет без ошибок, то в папке build/x.x.x.xxx/linux появятся файлы:

  • outwiker_linux_amd64.7z и outwiker_linux_amd64.zip - архивы с 64-битными бинарными сборками, упакованными с помощью архиваторов 7z и zip соответственно.
  • outwiker_linux_i386.7z и outwiker_linux_i386.zip - архивы с 32-битными бинарными сборками, упакованными с помощью архиваторов 7z и zip соответственно.
  • outwiker-x.x.x+xxx_amd64.deb - deb-пакет с 64-битной бинарной сборкой.
  • outwiker-x.x.x+xxx_i386.deb - deb-пакет с 32-битной бинарной сборкой.

Для останова всех виртуальных машин используйте команду

fab vm_stop

или

fab vm_halt

Эти две команды аналогичны. После создания бинарных сборок на виртуальных машинах с помощью команды fab vm_linux_binary виртуальные машины не останавливаются и продолжают занимать оперативную память пока вы их не остановите с помощью указанных выше команд.