Оптимизация сборки Spring приложений в Gitlab/Gitlab-Runner

Оцените статью

Продолжаем наши приключения с оптимизацией сборки Java Spring приложений и собственно и прикинем, что мы можем сделать и даже сделаем.
Есть ли у вас план, мистер Фикс? Есть ли у меня план? Есть ли у меня план? Да у меня целых три плана!

Первое, и самое простое, что приходит в голову, это поменять политику загрузки образов с постоянно скачивать, на скипать если такой образ уже есть и для этого в файле /etc/gitlab-runner/config.toml добавляем записи в раздел [runners.docker].

    pull_policy = ["if-not-present"]
    allowed_pull_policies = ["always", "if-not-present"]

Естественно, что сервис надо будет перезапустить, а секция целиком будет примерно такая.

  [runners.docker]
    tls_verify = false
    image = "docker:20.10.5"
    pull_policy = ["if-not-present"]
    allowed_pull_policies = ["always", "if-not-present"]
    privileged = false
    disable_entrypoint_overwrite = false
    oom_kill_disable = false
    disable_cache = false
    volumes = ["/var/run/docker.sock:/var/run/docker.sock", "/cache"]
    shm_size = 0

Супер прироста от этого не будет, но с чего-то же надо начинать.

Следующим этапом клонируем число сборщиков в зависимости от размера команды разработки или если вы используете кубер и я тут писал как (Запуск gitlab-runner в Kubernetes), то там еще проще можно сделать и наплодить их хоть сто по запросу, но есть нюанс, что вы устроите хаос в админке, так-как они из админки то они не удаляются так-же по запросу 🙂 Так мы получаем горизонтальное масштабирование.

Далее мы получаем прикол с кэшем скачанных файлов и на каждом ранере он будет свой и если их у вас как и у меня их больше десяти, то это становится проблемкой, так-как выбирается первый доступный. Проблемка решается довольно легко и нам надо только поднять S3 хранилку (тут я написал как просто это сделать Установка и запуск MinIo), создаем бакет, создаем пользователя, накручиваем ему права и получаем токен и ключик.

Теперь так-же прописываем в секцию [runners.cache] что-то вот такое.

  [runners.cache]
    MaxUploadedArchiveSize = 0
    Type = "s3"
    Shared = true
    [runners.cache.s3]
      ServerAddress = "s3-01.xxxxxxxx:9000"
      AccessKey = "xxxxxxxxxxxxxxxx"
      SecretKey = "xxxxxxxxxxxxxxxxxxxxx"
      BucketName = "gitlab-runner-storage"
      BucketLocation = "ru-nsk-1"
      Insecure = true

Если вы не вытаскиваете S3 в дикий интернет, то обратите внимание на параметр Insecure = true. По умолчанию подключение к бакету происходит по https.

Получается вот такая красота.

Собсно, на этом все и теперь больше и покрутить то вроде нечего. Если, кто еще знает чего покрутить, то пишите.

P.S. Ну еще пример как для спринга кэш описать для докер-билдера.

Build CHATRA-STATISTICS:
  image:
    name: maven:3.8.1-openjdk-17
  stage: Build APPS
  tags:
    - image-builder
  cache:
    paths:
      - .m2/repository
  variables:
    MAVEN_OPTS: "-Dmaven.repo.local=$CI_PROJECT_DIR/.m2/repository"
  script:
    - echo "CHATRA-STATISTICS"
    - echo $CI_SMS_MAVEN_KEYS > ./maven_settings.xml
    - mvn -DskipTests -s ./maven_settings.xml -f ./pom.xml clean install
  artifacts:
    paths:
      - ./target/*.jar
    expire_in: 1 day

Похожие записи

Настройка кластера Kubernetes в Ubuntu Linux 24.04: три узла (один мастер с возможностью запуска пользовательских подов, PVC в каталоге на хосте, сеть на Calico)

В этой статье мы рассмотрим пошаговую настройку кластера Kubernetes на Ubuntu 24.04 с тремя узлами: один мастер (который также может запускать пользовательские поды) и два рабочих узла. Мы настроим PersistentVolume…

Инструкция по установке и настройке ProxySQL в Ubuntu 24.04

В рамках создания собственного кластера Kubernetes я поднаял кластер Mysql который работает в режиме Master-Slave и Slave-узлы соответственно работают в режиме read-only, а мастер в read-write. Соответственно мне нужен балансировщик…

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Читать еще статьи

Настройка кластера Kubernetes в Ubuntu Linux 24.04: три узла (один мастер с возможностью запуска пользовательских подов, PVC в каталоге на хосте, сеть на Calico)

Настройка кластера Kubernetes в Ubuntu Linux 24.04: три узла (один мастер с возможностью запуска пользовательских подов, PVC в каталоге на хосте, сеть на Calico)

Инструкция по установке и настройке ProxySQL в Ubuntu 24.04

Инструкция по установке и настройке ProxySQL в Ubuntu 24.04

Полное руководство по настройке UFW в Ubuntu: от основ до продвинутых правил

Полное руководство по настройке UFW в Ubuntu: от основ до продвинутых правил

Полное руководство по развертыванию GlusterFS в Ubuntu Linux: от подготовки до тестирования производительности

Полное руководство по развертыванию GlusterFS в Ubuntu Linux: от подготовки до тестирования производительности

Подробная инструкция по настройке кластера из трёх серверов MySQL на Ubuntu 24.04

Подробная инструкция по настройке кластера из трёх серверов MySQL на Ubuntu 24.04

Полное руководство по настройке NFS-клиента в Ubuntu Linux: от установки до автоматического монтирования

Полное руководство по настройке NFS-клиента в Ubuntu Linux: от установки до автоматического монтирования