Кукбук · 3 из 3
Попасть в фид
Релиз даёт человеку скачивание. Фид даёт apk upgrade — единственный
путь, который продолжает работать после первой установки. Ниже то, что требует
owfeed-packages; другой фид будет отличаться
деталями, но не устройством.
Два требования
Пакеты должны быть подписаны вашим ключом, а его публичная половина
зафиксирована в фиде. Пакет, который фид не может атрибутировать, он не опубликует — и проверка
живёт в пайплайне, а не в тексте: owfeed doctor валит неподписанный пакет, и дерево
публикуется без него.
Это шаг 2, так что если вы его прошли — всё уже готово.
Приложите к заявке author.pub.pem.
Описание говорит, что пакет такое, а не для чего он. Его показывает
apk info, и оно уезжает в индекс: фактическое, техническое, до 512 байт.
Публикуйте подписанный манифест — и обновления поедут сами
Три варианта, и от выбранного зависит, сколько ручной работы будет на каждом вашем следующем релизе:
| Что вы публикуете | Что покрывает подпись | Автообновления |
|---|---|---|
манифест owfeed release | всю опись: каждый файл, его размер и хеш, плюс репозиторий и тег | да |
подписанные .apk | каждый файл, но не их список | да, пока набор файлов не меняется |
| голые бинарники и контрольные суммы | ничего: контрольная сумма говорит, что скачалось без повреждений, но никогда — кто это сделал | никогда |
Вот честная причина публиковать манифест: это одна команда, после которой обновление доезжает в течение часа, а не ждёт, пока кто-то прочитает уведомление.
Заявка
- Выпустите релиз с подписанным манифестом — шаг 2. Фид проверит его прежде, чем что-то трогать.
- Заведите issue по шаблону Request package publication: репозиторий, тег, ваши публичные ключи и их id.
- Бот проверит за минуту: релиз существует, манифест сходится с заявленным ключом, формат такой, какой фид умеет читать. Если что-то не так — он скажет, что именно.
- Ключ смотрит человек. Единственный ручной шаг, и пропустить его нельзя: зафиксировать ключ — и есть всё решение о доверии, а под мерджем стоит его имя.
- Дальше автоматика. Каждый новый тег подхватывается в течение часа.
Что автоматика не сделает сама
Даже когда всё настроено, на это всё равно смотрит человек — потому что подпись отвечает на вопрос автор ли это выпустил, а не стоит ли это выпускать не глядя. Апстрим с украденным релизным ключом подписывает безупречно:
- Смена мажорной версии, когда апстрим меняет саму суть пакета.
- Диф, трогающий что-то кроме пинов, — это проверка, которая потихоньку ослабляет сама себя.
- Третье обновление одного пакета за сутки. Украденным ключом можно выпустить цепочку релизов быстрее, чем кто-нибудь дочитает уведомления.
- Что угодно под
keys/— всегда.
С чем вы соглашаетесь
Фид раздаёт, а не рецензирует. Прося взять ваш пакет, вы утверждаете и продолжаете отвечать за:
- право на распространение — лицензия это позволяет, её условия выполнены, товарные знаки не мешают;
- то, что внутри — содержимое, поведение, безопасность, законность;
- достоверность метаданных — заявленная лицензия, описание и URL апстрима это ваши утверждения, они переносятся без изменений;
- ответы на обращения — баг-репорты, сообщения о проблемах безопасности и жалобы идут к вам.
Пакет может быть снят с публикации в любой момент и без предупреждения. Права оставаться в чужом фиде не существует. Полные условия — в CONTRIBUTING фида.
Проверьте канал, а не только пакет
owlab test --release 25.12.5 \ --feed 'https://repo.owfeed.org/releases/25.12/x86_64/packages.adb' \ --feed-key ./owfeed-packages.pem \ --install my-app \ --assert 'http 200 /cgi-bin/luci/admin/services/mine'
Установка файла доказывает, что работает пакет. Установка по имени из подписанного индекса доказывает, что работает канал: индекс парсится, URL не редиректит, а ключ на роутере тот самый, которым индекс подписан. Установка файла не может сломаться ни одним из этих способов — поэтому и обнаружить их не может.
Показать это в README
Как только фид берёт пакет, он публикует для него два бейджа, собранных из только что построенного индекса, — так что версию, которую нельзя поставить, они не покажут:
[](https://owfeed.org/install/ru/) [](https://owfeed.org/install/ru/)
Первый показывает версию, которую раздаёт фид; второй — линии релизов, на которых он её раздаёт.
Что дальше делают ваши пользователи
Одна команда, и она одинакова для любого фида на owfeed:
wget -qO- <фид>/subscribe.sh | sh. Дайте им ссылку на
страницу установки, а не свою копию инструкции: именно так
задокументированный URL расходится с рабочим.