Как построить компоненты локально

Действия

  1. Создайте и обновите новую VM

  2. Создайте новую зону по умолчанию

  3. Проверьте, что новая зона по умолчанию создалась правильно

  4. Создайте зону для получения зависимостей и получите зависимости

  5. Создайте новую зону для создания локального репозитория

  6. Создайте новую зону для сборки компонент

  7. Создайте новую зону для тестовой установки компонент

1. Создайте и обновите новую VM

Для создания новой VM в vmware/virtualbox/kvm воспользуйтесь этой инструкцией.

Для создания VM в vSphere SPB-LABS выполните шаги 1-5 из этой инструкции.

2. Залогиньтесь с правами root и создайте новую зону по умолчанию

Для KVM используйте следующие инструкции:

  1. Настройка сети

  2. Создание зоны по умолчанию

Для VM в vSphere:

  1. Создайте mountpoint, куда будут монтироваться зоны:

root@dilos:~# zfs create -o mountpoint=/zones rpool/zones root@dilos:~# mkdir /export/builds root@dilos:~# apt install reprepro

2. Добавьте пользователя admin:

root@dilos:~# useradd -m -g staff admin root@dilos:~# passwd admin Enter new UNIX password: Retype new UNIX password: passwd: password updated successfully root@dilos:~# echo "admin ALL=(ALL:ALL) NOPASSWD: ALL" >> /etc/sudoers.d/admin

3. Выполните Инструкцию по настройке сети до шага, на котором создаётся зона zone01.

4. Создайте зону default, выполнив следующие команды:

root@dilos:~# cat > defzone.cmd <<EOT create set zonename=default set zonepath=/zones/default set autoboot=false set ip-type=exclusive add net set physical=iz1 set global-nic=vsw0 add property (name=ip,value="192.168.0.1") add property (name=gateway,value="192.168.0.254") add property (name=netmask,value="255.255.255.0") add property (name=primary,value="true") end add attr set name=resolvers set type=string set value=8.8.8.8 end add fs set dir=/export/home/admin set special=/export/home/admin set type=lofs end add fs set dir=/export/builds set special=/export/builds set type=lofs end commit verify exit EOT zonecfg -z default -f defzone.cmd

Для установки зоны по умолчанию выполните:

Для автоматизации создания остальных зон и входа в них можно использовать скрипт из Jenkins:

Для этого скопируйте этот код в файл, например, create_zone.sh и сделайте его выполняемым:

 

Теперь Вы можете запустить его в формате ./create_zone.sh <zone-name> <zone-ip-domain> <zone-ip-node> , например!:

./create_zone.sh zone02 192.168.0 3

3. Создайте зону для получения зависимостей и получите зависимости

Создайте папку для репозитория:

Создайте зону и войдите в неё:

Команды ниже выполняются в зоне.

Обновите файл /etc/apt/sources.list :

Для удобства сбор зависимостей выполняется в директории /data/repo/pkg:

Чтобы нижеприведённый скрипт заработал, Вам нужно создать два файла (текущее содержимое их можно получить по ссылкам ниже):

  1. list_component - список компонент

  2. list_pkg_sec - список для построения компонент

Теперь получите зависимости. Для этого скопируйте этот скрипт в файл, например, get_deps.sh или выполните следующую команду:

Сделайте его исполняемым и запустите:

4. Создайте новую зону для создания локального репозитория

Создайте зону и войдите в неё:

Команды ниже выполняются в зоне.

Обновите файл /etc/apt/sources.list:

Установите в зоне необходимые пакеты для работы репозитория:

Создайте директорию, где у вас буду лежать конфигурационные файлы для репозитория:

и создайте конфигурационный файл репозитория:

Выполните эти команды для добавления пакетов *.deb в репозиторий:

Получите исходные файлы для локального репозитория, для чего создайте файл, например, get_sources.sh и сделайте его исполняемым (для работы скрипта требуется установленный пакет dpkg-dev):

Теперь запустите его:

5. Создайте новую зону для сборки компонент

Создайте зону и войдите в неё:

Подготовьте зону для сборки компонент. Для этого создайте файл, например, prepare.sh и сделайте его исполняемым:

Запустите:

6. Постройте компоненты

Скопируйте этот скрипт в файл, например, build_all.sh или выполните команду:

Сделайте его исполняемым и запустите:

После сборки компонент Вы можете проверить их установку в отдельной новой зоне.