Как устроен github packages, подводные камни интеграции с digital ocean и другими сервисами
Теги:
Все написанное в данной заметке относится к платным таривам github и [digital-ocean]
[github-packages] шарит серверное пространство с [github-action]. Это означает, что если мы пишем какие-то логи или создаем другие артефакты во время выполнения экшенов - это будет посчитано под исковму пространству пакетов. Частично решить это можно настроив удаление артефактов для экшенов глобально или локально для каждого воркфлоу.
Есть проблема с определением размера самих пакетов. В админке на страницах пакетов это не выведено. По идее должно выводиться здесь для проекта или пользователя:
Как видно на скриншоте, в данном случае у меня пусто, хотя на самом деле в проекте создано три пакета общим размером около 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]. Часто такая ошибка возникает, когда используются недоспусчтимые символы, неверный реигстр или команда собрана некорректно, что мешает ее парсингу. Проблема объясянется тут.