Как мне кэшировать шаги в действиях GitHub? - PullRequest
4 голосов
/ 12 марта 2019

Скажем, у меня есть рабочий процесс действий GitHub с 2 шагами.

  1. Загрузите и скомпилируйте зависимости моего приложения.
  2. Скомпилируйте и протестируйте мое приложение

Мои зависимости редко меняются, и скомпилированные зависимости можно безопасно кэшировать до следующего изменения файла блокировки, в котором указаны их версии.

Можно ли сохранить результат первого шага, чтобы в будущем рабочий процесс мог пропустить этот шаг?

1 Ответ

3 голосов
/ 12 марта 2019

Мои зависимости редко меняются, и скомпилированные зависимости можно безопасно кэшировать до следующего изменения файла блокировки, в котором указываются их версии.Можно ли сохранить результат первого шага, чтобы в будущем рабочий процесс мог пропустить этот шаг?

Первый шаг:

Загрузите и скомпилируйте мои приложения.зависимости.

Действия GitHub сами по себе не сделают этого за вас. Единственный совет, который я могу вам дать, это то, что вы придерживаетесь лучших практик Docker, чтобы гарантировать, что если действия будутиспользуйте кэширование докера, ваше изображение может быть использовано повторно, а не восстановлено.См .: https://docs.docker.com/develop/develop-images/dockerfile_best-practices/#leverage-build-cache

При создании изображения Docker выполняет инструкции в вашем Dockerfile, выполняя каждое из них в указанном порядке.При рассмотрении каждой инструкции Docker ищет существующий образ в своем кэше, который он может использовать повторно, вместо создания нового (дублирующего) образа.

Это также означает, что базовая система действий GitHub может/ будет использовать кеширование Docker.

Несмотря на такие вещи, как компиляция, Docker не сможет использовать механизм кэширования, поэтому я советую вам очень хорошо подумать, если это то, что вам крайне необходимо.Альтернативой является загрузка скомпилированных / обработанных файлов из хранилища артефактов (Nexus, NPM, MavenCentral), чтобы пропустить этот шаг.Вы должны взвесить все преимущества и сложность, которую вы добавляете в свою сборку.

...