#docker #gradle
Вопрос:
Я пытался создать контейнер Docker, который будет запускать мой конвейер Android CI (по крайней мере, большую его часть) на действиях Github, проблема в том, что у моей компании есть несколько частных зависимостей.
Поэтому я создал образ докера, который выполняет действия онлайн при подключении к сети моей компании, и все работает нормально. Затем я фиксирую этот образ Docker, создаю новый тег и загружаю его в реестр… однако всякий раз, когда я нахожусь на другом компьютере и пытаюсь запустить Gradle в автономном режиме, это просто не сработает… Даже несмотря на то, что у него есть кэшированные зависимости.
Есть ли какой — нибудь другой способ достичь того, что я здесь пытаюсь? Я не думаю, что тома работают с действиями Github
Ответ №1:
Вы могли бы подумать о том, чтобы загрузить свои зависимости один раз, а затем скопировать каталог, в котором они хранятся ($GRADLE_USER_HOME/.gradle/кэширует/модули-2), и вызвать этот каталог в своей автономной настройке.
Для этого перед/одновременно с выполнением команды Gradle (автономно) просто установите переменную GRADLE_RO_DEP_CACHE в качестве точки кэша зависимостей, доступной только для чтения, для этого каталога. Для получения дополнительной информации, пожалуйста, ознакомьтесь с документацией Gradle по адресу:
https://docs.gradle.org/current/userguide/dependency_resolution.html#sub:shared-readonly-cache
Комментарии:
1. Спасибо за это, бывает, что у меня была конфигурация, не позволяющая gradle сохранять файлы .jar после запуска сборки… Во всем моя вина
Ответ №2:
Случается, что у меня была конфигурация, не позволяющая Gradle хранить свои зависимости.
buildCache {
local {
enabled = false
}
}
После включения этого и повторного запуска Gradle я смог заставить все работать должным образом. Мои шаги были:
- Создание образа Docker с нуля
- Выполнение этапов сборки в режиме онлайн и при подключении к сети моей компании
- Зафиксируйте это изображение, а затем загрузите его на DockerHub
Я решил зафиксировать образ вместо копирования зависимостей моего хоста в образ, потому что в предыдущих тестированиях у него были некоторые проблемы, связанные с конкретными ОС. Таким образом, это, кажется, работает нормально.