Хостинг пакетов для команд и CI
Свой репозиторий Linux-пакетов без своего сервера
Загрузите .deb, .rpm или .apk одной командой. PackageCloud подпишет пакет и раздаст его с getpkg.ru, а ваши серверы и CI поставят его обычными apt, dnf и apk.
Шаг 1 из 3: Опубликовать
01Публикацияpcloud push acme/tools/debian/sid ./hello_1.0.0-1_amd64.deb --wait
Пакет готов к установке сразу после загрузки
Вы загружаете файл, остальное PackageCloud делает сам: читает описание пакета, подписывает его и обновляет списки пакетов (индексы) для apt, dnf и apk.
Описание берётся из файла. Имя, версию, архитектуру и зависимости не нужно вводить вручную.
hello_1.0.0-1_amd64.deb
- Package
- hello
- Version
- 1.0.0-1
- Architecture
- amd64
- Depends
- libc6
Подпись ставится сама. Ключ репозитория подписывает списки пакетов, а rpm и apk ещё и сами файлы. Серверы проверяют подпись и не поставят подменённый пакет.
✓ 421F28FE…6F87040E
Списки пакетов обновляются сами. Release, repodata и APKINDEX пересобираются после каждой загрузки, и новая версия сразу видна серверам.
- Release
- repodata
- APKINDEX
02Подключениеcurl -fsSL https://getpkg.ru/pcloud/stable/install.sh | sudo sh
Сервер подключается одной командой
Скрипт сам определит дистрибутив, добавит репозиторий и ключ подписи. Дальше пакеты ставятся обычным apt, dnf или apk.
Одна команда на сервер. curl для Debian, Ubuntu и Enterprise Linux, wget для Alpine.
Скачивание без паролей. getpkg.ru отдаёт пакеты любому серверу, токены по машинам раскладывать не нужно.
03Зеркалаdeb.debian.org → acme/debian-mirror
Внешние apt-репозитории рядом с вашими
Подключите внешний репозиторий, например Docker, как зеркало. Его копия раздаётся с getpkg.ru, и серверам не нужно ходить за пакетами во внешний интернет.
Копируется только нужное. Вы выбираете наборы (suites) и архитектуры, остальное не скачивается.
Один адрес и один ключ. Серверы подключают зеркало как обычный репозиторий.
- Объём зеркала виден до начала загрузки.
- Можно взять только нужные наборы и архитектуры.
- Серверы не ходят во внешние репозитории.
04Команда и CIpcloud config set token <token>
Доступ для команды и CI
Сотрудники работают в общем пространстве команды (неймспейсе), у каждого своя роль. CI публикует пакеты под отдельным токеном и не получает лишних прав.
Пять ролей. От наблюдателя, который только смотрит, до владельца.
Токены для CI. Отдельный аккаунт с ролью разработчика публикует пакеты из пайплайна и не может менять настройки.
Консольный клиент pcloud. Загружает, показывает и удаляет пакеты из терминала и CI. Один файл для Linux и macOS без зависимостей.
05Каталог/pcloud
Публичная страница для ваших пакетов
У каждого репозитория есть страница со списком пакетов, версиями для каждой ОС, файлами внутри и командой установки. Так выглядят и репозитории самого pcloud.
Поиск по имени пакета. Выберите ОС, архитектуру и версию, и страница покажет команду установки именно для них.
- nginx-module-brotli1.30.6+1.0.0debrpmapk
- nginx-module-geoip21.30.6+3.4debrpmapk
- nginx-module-headers-more1.30.6+0.39debrpmapk
- nginx-module-vts1.30.6+0.2.5debrpmapk
06НадёжностьGPG · RSA · signed-by · gpgcheck
Безопасность, которую проверяет каждый сервер
Подпись, права доступа и раздача устроены так, чтобы подменённый пакет не дошёл до сервера, а секреты не хранились на машинах.
Подпись и проверка. Списки пакетов подписаны ключом репозитория: GPG для deb и rpm, RSA для apk. apt, dnf и apk проверяют подпись перед установкой.
Минимальные права. Пять ролей от наблюдателя до владельца. CI получает токен с ролью разработчика и не может менять настройки.
Никаких секретов на серверах. Пакеты и ключи скачиваются без токенов, поэтому на машинах не лежат пароли, которые могут утечь.
Работаем на себе. Консольный клиент pcloud публикуется через PackageCloud в репозиторий pcloud/stable.
Совместимость
| deb | Debian, Ubuntu, Linux Mint |
|---|---|
| rpm | RHEL, Rocky Linux, AlmaLinux, Oracle Linux 7–10 и Fedora 38–44 |
| apk | Alpine Linux 3.12–3.24 и edge |
Начните с бесплатного репозитория
Регистрация займёт минуту, а первый пакет загружается одной командой.