==Как собрать docker и запустить проверки CI==
- Cобрать базовый докер образ командой из ./Readme.md, находясь в корневой директории userver:
docker build -t ghcr.io/userver-framework/ubuntu-22.04-userver-base:latest -f scripts/docker/base-ubuntu-22.04.dockerfile .
- Собрать CI образ докера, который основан на образе из п1, но содержит в себе дополнительные пакеты для CI
docker build -t ghcr.io/userver-framework/ubuntu-22.04-userver-base-ci:latest -f scripts/docker/base-ubuntu-22.04-ci.dockerfile .
- Затем, необходимо запустить
docker run -d ghcr.io/userver-framework/ubuntu-22.04-userver-base-ci:latest
для того, чтобы сформировался контейнер, который будем экспортировать в порто слой, hash контейнера отобразиться в консоле
- Экспортируем командой
docker export <hash_userver_docker_tag_container> -o ./layer.tar
сформируется слой, который уже можно выгрузить в sandbox
- и выгружаем полученный слой командой
ya upload ./layer.tar -T PORTO_LAYER_STRM_TRNS \
--owner $(arc user-info --json | jq -r '.effective_login') --ttl 90 \
-d "taxi porto layer for compile userver with cmake" \
--attr platform=linux_ubuntu_22.04_jammy \
--json-output
где PORTO_LAYER_STRM_TRNS
- тег, обозначающий что мы выгружаем порто слой, owner
- владелец ресурса в sandbox, ttl
- срок жизни ресурса в днях, d
- описание, attr platform
- платформа, на какой будет запущен наш контейнер, json-output
- вывод результата в json
формате
Результатом будет примерно такое сообщение:
{
"skynet_id": "rbtorrent:5e230328251ab8ef188c61266e502ee06942cc11",
"task": {
"url": "https://sandbox.yandex-team.ru/api/v1.0/task/1652353852",
"id": 1652353852
},
"resource_id": 4172730048,
"file_name": "layer.tar",
"download_link": "https://proxy.sandbox.yandex-team.ru/4172730048",
"resource_link": "https://sandbox.yandex-team.ru/resource/4172730048/view",
"md5": "e850d1fa2ccb11c572154ef778967df8"
}
из которого нам нужен resource_id
- Необходимо поменять ссылку на ресурс в файле, в проверках CMake, нужно найти строчку
porto_layers
и указать там, полученный ранее resource_id
, после чего проверки в CI (CMake) должны обновиться с изпользованием нового контейнера.
PS (deprecated: сейчас загрузка на github packages автоматизировано нажатием на кнопку Deploy
в интерфейсе GitHub):
- Чтобы обновить или создать новый докер образ на внешний GitHub, то необходимо
- иметь разрешение на запись сюда, (обратитесь к
@antoshkka
)
- необходимо получить токен для входа В интерфейсе GH, выберите Settings в профиле -> Developer settings -> Personal access tokens -> Generate new token (classic) и настройте токен, для деплоя и сохранения пакетов !!! Сохраните значение токена
- нужно залогиниться в ghcr.io
docker login -u <github_username> ghcr.io
в качестве пароля указать сохраненный выше токен
- Отправить пакет на публикацию, например так:
docker push ghcr.io/userver-framework/ubuntu-userver-build-base:v1
- После чего, необходимо проверить, что пакет виден для внешнего пользования: выберите тут загруженный пакет выбрать Package settings и в Danger Zone выбрать Change package visibility - установить Public
- Внести изменения в файл docker-compose.yaml добавив или изменив контейнер для запуска докер образа для сборки userver P.S.: стоит проверить, что github CI не сломался при внесении изменений, в случае необходимости, можно поправить и там.