Ansible — Несколько Сборок Gradle С Докером

  • Автор темы Solotana
  • Обновлено
  • 15, Oct 2024
  • #1

У меня есть настройка нескольких ветвей в Jenkins для моего проекта Gradle. Я хотел бы быть эффективным с точки зрения производительности и стоимости (денег!). Это означает, что если я хочу собирать свой проект много раз, для разных ветвей, коммитить параллельно. Для этого я подумываю о том, чтобы все было внутри контейнеров, но я не уверен, будут ли мои контейнеры использовать библиотеки, разрешенные gradle. Более того, я не хочу разрешать зависимости каждый раз, когда я их вызываю, это также отнимает много времени и требует использования сети.

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

Поэтому мне интересно, какой подход будет лучше? Кто-нибудь сталкивался с подобной проблемой? Есть ли у кого-нибудь какой-нибудь ориентир, которым можно поделиться?

#docker #ansible #build-pipeline #gradle

Solotana


Рег
05 Jun, 2011

Тем
95

Постов
213

Баллов
698
  • 25, Oct 2024
  • #2

В настоящее время существует проблема с разделением кеша Gradle между контейнерами:

https://github.com/gradle/gradle/issues/851

Я думаю, что лучшее решение на данный момент — это добавить в образ Docker как можно больше зависимостей, а затем использовать том для совместного использования между последовательными сборками, ограничив его одной параллельной сборкой на хост. Вы можете подключить кеш к хосту с помощью docker-compose.yml следующим образом:

 version: '3'
services:

gradle:

image: gradle:4.0.1-jdk8-alpine  # I'd suggest using this as a base to build your own Gradle image with dependencies baked in

working_dir: /usr/src/app

volumes:

- ./:/usr/src/app:Z

- ./.gradle:/home/gradle/.gradle:Z
 

Альтернативно, другим решением было бы рассмотреть кэширование на уровне сети, например. Кальмар.

 

Alex Fan


Рег
28 Dec, 2006

Тем
70

Постов
191

Баллов
541
Тем
403,760
Комментарии
400,028
Опыт
2,418,908

Интересно