Как избежать загрузки дистрибутива оболочки Gradle при работе с образом докера Gradle? - PullRequest
0 голосов
/ 25 сентября 2019

Мой проект построен с gradlew.GitLab CI создает проект в докере с официальным изображением Gradle (см. https://hub.docker.com/_/gradle).

Теперь, даже если Gradle уже установлен в контейнер для монет, оболочка все равно будет загружать дистрибутив каждый раз.Большую часть времени сборки.

Как я могу "рассказать" обёртке об уже установленном дистрибутиве, чтобы он не перезагружал его (при условии, конечно, версии совпадают)?

Конечноальтернатива состоит в том, чтобы использовать gradle вместо gradlew в CI и полагаться на образ докера для получения правильного дистрибутива, но я бы хотел избежать этого, если это возможно, так как тогда мне пришлось бы вручную сохранять .gitlab-ci.yml иСинхронизация конфигурации оболочки.

1 Ответ

1 голос
/ 25 сентября 2019

Я не думаю, что вы не можете указать оболочке использовать локальную версию Gradle, которая была установлена ​​вручную.

Единственный подход, который я могу придумать, - предотвратить загрузку дистрибутива при каждой сборке, который не 'При обновлении Gradle необходимо выполнить дополнительные действия, это кэшировать домашнюю папку Gradle (например, /home/gradle/.gradle).Это должно быть возможно, даже если он находится в контейнере Docker.

Я не знаю подробностей о том, как GitLab поддерживает кэширование, но, вероятно, имеет смысл, только если кэш хранится локально (или на той же машине).или на сервере кеша с высокой пропускной способностью сети).Если его нужно загружать и загружать из чего-то вроде корзины S3 при каждой сборке, это, вероятно, займет столько же времени, сколько и загрузка его с services.gradle.org.Но если вы сможете выполнить эту работу, вы будете кэшировать не только дистрибутив Gradle, но и зависимости сборки, что должно еще больше ускорить сборку.

...