Инструкция по разворачиванию girar-builder

Материал из ALT Linux Wiki
Версия от 20:35, 11 декабря 2015; IvanZakharyaschev (обсуждение | вклад) (→‎Примечания: +1 navigation banner)
(разн.) ← Предыдущая версия | Текущая версия (разн.) | Следующая версия → (разн.)
Stub.png
Данная страница находится в разработке.
Эта страница ещё не закончена. Информация, представленная здесь, может оказаться неполной или неверной.


Приборы и материалы

  1. управляющая машина
  2. по машине на каждую архитектуру-бранч (полный перебор) — то есть для сизифа, 4.1, 4.0 и архитектур i586, x86_64 нам нужно 6 машин.

Конечно, все эти машины могуть быть (и обычно так и делается) контейнерами openvz.

Настраиваем собирающие машины

  1. здесь должно быть минимум всего
  2. должен быть ssh-доступ от управляющей машины (и больше ниоткуда)
  3. должна быть копия репозитория (можно readonly), находящаяся в той же директории, что и на упраляющей машине; из софта нужны только hasher и rsync
  4. должен быть юзер, от имени которого управляющая машина приходит по ssh (для этого нужно сгенерировать беспарольный ключ и разложить публичную часть по сборочницам, а приватную положить на управляющей); этот юзер должен иметь возможность запускать hasher (hasher-useradd)

Инструкция по установке

  1. Берём машину со свежим сизифом
  2. На машине должен работать ssh
  3. apt-get install git hasher gear sisyphus_check rpm-build qa-robot[1]
  4. клонируем girar.git, собираем, ставим
  5. создаем эталонный git репозиторий для пакетов (packages), аналогично private и public:
    for d in packages private public; do mkdir /etc/girar/$d.git; cd /etc/girar/$d.git; git init-db --bare; done
  6. пользователь и группа girar-builder создаются автоматически при установке пакета girar; если используюся какие-либо bind mounts, стоит явно указать UID подальше от потенциально имеющих право на запись туда
  7. создаем каталоги (или ссылки на каталоги) /people /gears /srpms с владельцем и группой girar-builder
  8. добавляем имена репозиториев в /etc/girar/repositories (по штуке на строку; названия — например, sisyphus 5.1 4.0)
  9. от пользователя girar-builder клонируем репозиторий с girar-builderом
  10. копируем репозитории; они должны быть доступны на запись для girar-builder (наверное, ему принадлежать)
  11. генерируем ssh-ключ на основной машине (беспарольный) и делаем, чтобы она могла от юзера girar-builder ходить по сборочным машинам
  12. добавляем их в ~/.ssh/config так, чтобы они назывались, например, build-4.1-x86_64 и build-4.1-i586
  13. создаём конфиги: один общий и по одному для каждого репозитория, например, так:
  • gb-sh-conf-girar-builder
GB_GEARS_DIR=/gears/
GB_SRPMS_DIR=/srpms
GB_TASKS_DIR=/var/spool/girar/tasks/
GB_META_DIR=/meta
GB_HOME=/home/girar-builder/girar-builder/
GB_REPO_EMAIL=org@altlinux.org
GB_REPO_MIRRORS=localhost
GB_REPO_RPMARGS="-ba"
GB_BUGZILLA_FROM=
GB_REPO_SIGNER=org@altlinux.org
  • gb-sh-conf-4.1
GB_REPO_LABEL=4.1
GB_REPO_DIR=/4.1
GB_REPO_UP_NAME=
GB_REPO_DOWN_NAME=4.0
GB_REPO_REL_SUFF_MUST_NOT="M50"
GB_REPO_REL_SUFF_MUST_HAVE=
GB_REPO_CODENAME=4.1
  • gb-sh-conf-4.0
GB_REPO_LABEL=4.0
GB_REPO_DIR=/4.0
GB_REPO_UP_NAME=
GB_REPO_DOWN_NAME=
GB_REPO_REL_SUFF_MUST_NOT="M50 M41"
GB_REPO_REL_SUFF_MUST_HAVE=
GB_REPO_CODENAME=4.0

Несколько замечаний

  • Некоторые вещи надо отключать, например, автозакрытие багов в багзиле
  • Список выполняемых действий можно редактировать в gb-run-task
  • Рекомендуется пользоваться -x для отладки.
  • На машине должен быть один большой / без всяких отдельных /var и прочего (т.к. cp -l).

Добавление пользователей

  1. кладём ключ через реального пользователея в системе
  2. запускаем команду SUDO_USER=имя_реального_пользователя; girar-add username путь_к_ключу[2] gecos
  3. например SUDO_USER=admin;girar-add user /home/admin/user "Vladimir vladimirovich <vvp@gov.ru>
  4. после этого пользователь может работать с git, но не может управлять заданиями; для того, чтобы он мог управлять заданиями, надо сделать girar-build-enable user

Непонятно, замечания

  • Как иницировать ACL?
  • sisyphus прибит гвозядми

Примечания

  1. perl-RPM-Header — подразумевался perl-RPM-Header-Alt?
  2. в хомнике реального пользователя