Как устроен github packages, подводные камни интеграции с digital ocean и другими сервисами

Теги:

Все написанное в данной заметке относится к платным таривам github и [digital-ocean]

[github-packages] шарит серверное пространство с [github-action]. Это означает, что если мы пишем какие-то логи или создаем другие артефакты во время выполнения экшенов - это будет посчитано под исковму пространству пакетов. Частично решить это можно настроив удаление артефактов для экшенов глобально или локально для каждого воркфлоу.

Есть проблема с определением размера самих пакетов. В админке на страницах пакетов это не выведено. По идее должно выводиться здесь для проекта или пользователя:

package size

Как видно на скриншоте, в данном случае у меня пусто, хотя на самом деле в проекте создано три пакета общим размером около 1GB. В чем проблема - пока не ясно.

Надо иметь ввиду, что помимо диского пространства отдельно выставляется лимит на трансфер даты за пределы гитхаба. И эти лимиты довольно скромные - для Team тарифа всего 50Gb. Если не выставлены лимиты на полату, по истечению месяца будет дончисляться дополнительная плата. Как выставлять лимиты - тут. Ы целом про биллинг пакетов тут.

У [digital-ocean] проблем с трансфером нет (по крайней мере тарифы пока позволяют делать трансфер в интернет бесплатно. Правда тут нет полной ясности - на лендинге регистри пишут, что трансфер наружу залимичен 5-ю гигами.

Если использовать [digital-ocean] как регистри для дроплетов DO, тор в принципе трансфера наружу не будет. Если источником пакетов использовать github, то расходы будут только на сборку в [github-action], соответствнно получается, что github для небольшого проекта можно сделать бесплатный, на DO использовать Basic [digital-ocean-container-registry] без трансфера наружу. Данные из регистри поставлять на дроплет DO.

Как устроен Bandwidth Billing на [digital-ocean] можно прочитать тут

Size of github repositories

Еще одно ограничение - размер репозиториев. Maximum file size is 100MB. Maximum repository size is 10GB. Это на текущий момент. Размер каждого репозитория для аккаунта можно посмотреть так. Подробнее о лимитах в этом контексте читай на этом оверфло

Про build и push на github pacjages

Несколько готовых экшенов:

Оба решения подходят для пуша в регистри, не только на гитхаб.

Publishing and installing a package with GitHub Actions дока самого гитхаба.

Publishing Docker images - еще описание.

Working with the Container registry - описание того, как работать с [github-packages]. Пример проблемы с объяснением как надо написать экшен.

login-action - экшен, который логинит к докер регистри (сейчасgithub packages)

- name: Log in to the Github Package registry
uses: docker/login-action@v1
with:
    registry: $
    username: $
    password: $

Подробнее примеры аутентификации в воркфло

Тут как законнектить пакеты к репозиторию

github-action для деплоя с github packages на do

Docker error: invalid reference format: repository name must be lowercase

Это можно словить, к примеру, в [docker-compose]. Часто такая ошибка возникает, когда используются недоспусчтимые символы, неверный реигстр или команда собрана некорректно, что мешает ее парсингу. Проблема объясянется тут.