@lugange
System Administrator

Что лучше для Jenkins: использовать ECS в качестве слейвов или на мастере использовать docker image?

Сейчас имеем только Jenkins мастер для сборки приложений, есть предложение использовать следующий вариант:
pipeline {
        agent {
            dockerfile {
                filename 'Dockerfile.build'
                dir 'build'
                additionalBuildArgs "-t build-image:latest"
                args '-v /efs/jenkins/.nuget/:/home/jenkins/.nuget/'
                label 'unix'
            }

Но не лучше было бы использование ECS под слейвы? Если да, то чем?
  • Вопрос задан
  • 71 просмотр
Пригласить эксперта
Ответы на вопрос 2
saboteur_kiev
@saboteur_kiev
software engineer
На самом деле лучшего тут нет - надо всегда адаптироваться под ваши задачи и ваш проект.
Поднимать дополнительные слейвы в ECS имеет смысл, если у вас много билдов, много тестов, и они стоят денег.

В сложном проекте конфигурация может выглядеть так:
Мастер крутится в своем более-менее стабильном контейнере и рулит исключительно задачами, воркеров не запускает.
Есть несколько видов подготовленных контейнеров для слейвов - для сборки и для тестов, с разной конфигурацией. В некоторых случаях можно даже тут сделать разные контейнеры для сборки nodejs, сборки питона, тестов, и например контейнер для performance тестов.
Во время пайплайна нужные шаги выполняются на нужном слейве, а слейвы динамически поднимаются, если очередь вырастает и также автоматически уничтожаются, когда они не нужны. Например если контейнер поднимается за 1-2 минуты, то при простое в 20-30 минут его можно тушить. Так вы и сократите время билдов, когда их много, и сэкономите деньги на ресурсах, когда они простаивают.

А в простом проекте, где у вас все может собираться и тестироваться на одном и том же контейнере, а билды длятся не часы а десяток минут максимум, можно и не усложнять и не заниматься оверинженерингом, все клепать на нескольких мастер воркерах.
Ответ написан
Комментировать
@vitaly_il1
DevOps Consulting
Общая рекомендация - использовать мастер только для оркестрации, а jobs  запускать на слейвах.
Что использовать в качестве слейвов? Я привык к виртуалкам, есть плагины для динамического запуска слейвов в AWS и прочих облаках. Собственно говоря, мне вообще непонятно зачем images предлагают строить внутри контейнера.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы