Ответы пользователя по тегу Jenkins
  • Надо ли ставить на саму машину или можно в Docker?

    @MadridianFox
    Web-программист, многостаночник
    Важно понимать, что докер демон - это сервер, и он работает по сети, т.е. может быть доступен с другой машины или из контейнера.
    Самому дженкинсу докер не нужен (если не используется docker plugin для динамисеского создания агентов в контейнерах). Докер нужен агенту, потому что скорее всего вы хотите в итоге собрать докер образ.
    Однако, и агенту сам докер не нужен, нужен только клиент докера, а докер-демон может быть в другом месте.
    Кроме того, использовать мастер-ноду дженкинса это моветон. Это может помешать работе дженкинса. Лучше выделять отдельных агентов.
    В вашем случае нужно сделать следующее: собрать докер образ агента, в котором помимо самого агента будет докер(клиент) и необходимые вам инструменты.
    Далее запускаете этот образ с монтирования в него сокета докера, тогда докер-клиент внутри контейнера будет работать с докер-демоном на хосте.
    Ну и далее подключаете этот агент к дженкинсу. Сам дженкинс тут может быть вообще без дополнительных инструментов, без докера и даже на другой машине, хотя проще его поднять тут же в докере.
    Это не самая безопасная схема, есть недостатки.

    Другой вариант - собрать образ можно через podman. Это "докер" без демона. Его легче запустить в контейнере. Опять же его надо установить в образ агента.

    Ну или полноценный dind, да. Опять же в агенте.

    Если не хотите а отдельный агент, то да, вам нужно сделать всё это с образом дженкинса и использовать мастер-ноду.
    Ответ написан
    3 комментария
  • Как сделать так, что бы Jenkis (в docker) запускал jenkins-agent (в docker)?

    @MadridianFox
    Web-программист, многостаночник
    Есть плагин Docker plugin. Он добавляет в дженкинс cloud типа docker. Cloud - это как раз способ запускать и останавливать агенты по требованию.

    При настройке клауда вам потребуется указать адрес докер-демона. Это может быть как tcp host:port, так и unix socket, если вы примонтировали его в контейнер дженкинса.

    При этом, и в контейнер агента можно прокинуть адрес/сокет докера, чтобы иметь возможность из пайплайн работать с докером. Только придётся установить в образ агента пакет самого докера, чтобы в контейнере был доступен клиент докера.

    Далее уже можно в пайплайне как напрямую через bash вызывать docker run/build, так и с помощью плагина Docker pipeline plugin
    Ответ написан
    Комментировать