Debianov / vtc-bot

The bot for management of the virtual transport company (TruckersMP).
GNU General Public License v2.0
1 stars 2 forks source link

Добавление кэширования зависимостей в workflow. #62

Closed idealism44 closed 1 year ago

idealism44 commented 1 year ago

Как это работало у меня: последнее и получившееся самое быстрое.

Как всё работает

Github Actions Cache - скаченные и готовые к работе зависимости, доступ к которым можно получить по строке-ключу. Это можно представить как локальную директорию с архивами зависимостей, названия которых сопоставимо со строками-ключами. Так как архивы локальны, скорость к их доступу минимален. Чтобы посмотреть все кэши Github репозитория нужно прокликать Actions -> Management.Caches.

Чтобы взаимодействовать с этим кэшом, Github разработал actions/cache. Он позволяет получить доступ к кэшу Github репозитория и с ним взаимодействовать.

Так как разработчики писали бы одинаковые инструкции взаимодействий с кэшом для своих пакетных менеджеров, то в некоторых популярных actions для установки языков программирования представлены обёртки над actions/cache, которые позволяют удобно создать кэш зависимостей для пакетных менеджеров этих языков.

Создание кэша

Проект создаётся на Python, так что в workflow используется actions/setup-python.

Для того, чтобы создать кэш при установке python указываются следующие параметры:

И перед тем, как установить зависимости, можно проверить, установились ли они из кэша при установке python. Для этого проверяется переменная steps.setup-python.outputs.cache-hit на 'true'. И если так и есть, то можно не устанавливать зависимости.

Чтобы кэши сохранились в репозитории Github останется дожидаться успешного выполнение job. Сохранение кэша в actions/setup-python сделано в шаге Post Install Python, который выполняется только в случае непровального выполнения job.

Ссылки

Код из документации actions/setup-python для кэширования пакетов poetry: ссылка Официальное ознакомление Github Actions Cache: ссылка