Skip to content

Latest commit

 

History

History
95 lines (70 loc) · 5.42 KB

README_RU.md

File metadata and controls

95 lines (70 loc) · 5.42 KB

Репозиторий

Требования
  1. Установленный Docker.
Подготовка к сборке
  1. Пакеты в репозитории подписываются ключом GPG. Если у вас уже есть пара ключей, экспортируйте ее в ASCII и положите в pgp_keys. Ключи будут импортированы. Если email ключа совпадает с maintainer_email, ключ будет использован. Иначе будет сгенерирован новый ключ.

  2. При сборке будет сгенерирован самоподписанный сертификат для nginx. В дальнейшем его можно будет заменить.

  3. Генерация ключей требует достаточного количества энтропии. Docker использует источник энтропии хост-машины. Поэтому для ускорения сборки рекомендуется установить haveged.

sudo apt-get install haveged
sudo service haveged start 
Сборка репозитория
git clone https://<логин_на_битбакет>@bitbucket.org/third_vending/ubuntu_packages.git
cd ubuntu_packages
docker build [<параметры>] -t ubuntu_packages .

Для каждого параметра нужно указать:

--build-arg <имя_параметра>=<значение>
Параметр Описание
repo Название дистрибутива Ubuntu, например 'xenial'
repo_url URL где будет развернут репозиторий
repo_user, repo_passwd Логин и пароль для защиты репозитория
repo_label Описание репозитория
maintainer_name Имя для генерации GPG ключа
maintainer_email Email для генерации GPG ключа
git_user, git_passwd Логин и пароль для Git-репозитория

Для облегчения сборки существует скрипт config.sh, который запрашивает значения параметров и на их основании генерирует скрипт build.sh, который затем нужно запустить. Введенные параметры сохраняются в файле .settings. Так же скрипт генерирует .yml файл для запуска контейнера с помощью docker-compose.

Подготовка к запуску
  1. Сгенерируйте подписанные openssl сертификаты для nginx. Например используйте Let’s Encrypt.

  2. Если собираетесь использовать docker-compose, изучите ubuntu-packages.yml и подкорректируйте в нем пути к сертификатам.

Запуск репозитория
При помощи docker
docker run -p 80:90 -p 443:443 -v <путь к сертификату>:sslcerts/certificate.pem -v <путь к закрытому ключу>:sslcerts/privkey.pem ubuntu-packages --detach
При помощи docker-compose
docker-compose -f ubuntu-packages.yml up -d
Добавление пакета

Если пакет имеет собственную систему сборки, положите скрипт, собирающий пакет, в scripts/src-packages. Расширение .sh обязательно. Не забудьте дать права на запуск. Готовые пакеты должны иметь расширение .deb и находиться в /output

Не храните исходные коды пакетов в этом репозитории!!! Соответствующий скрипт должен самостоятельно получать исходные коды из репозитория Git.

Если пакет не имеет собственной системы сборки, создайте в packages каталог с именем пакета. Внутри каталога создайте файловую структуру, которая должна быть установлена при установке пакета. Создайте внутри каталог DEBIAN, заполните DEBIAN/control. В качестве примера используйте существующие пакеты. Положите в scripts/src-packages скрипт, компилирующий и устанавливающий необходимые файлы в packages/<имя пакета>.

Если пакет не требует компиляции, просто создайте необходимую структуру файлов в packages/<имя пакета>

Что можно улучшить?
  • Снабдить все пакеты системой самостоятельной сборки.
  • Использовать вместо dpkg-deb что-то получше.