Как построить на удаленном сервере Docker с декларативным конвейером Jenkins? - PullRequest
0 голосов
/ 27 февраля 2019

Я написал декларативный конвейер в Jenkins.Этот конвейер должен работать в контейнере Docker на удаленном сервере Docker.

Я читаю Настройка среды выполнения :

Настройка среды выполнения

Конвейер предназначен для простого использованияОбразы Docker как среда выполнения для одной ступени или всего конвейера.Это означает, что пользователь может определить инструменты, необходимые для его конвейера, без необходимости вручную настраивать агенты.Практически любой инструмент, который можно упаковать в контейнер Docker.можно легко использовать, внося незначительные изменения в файл Jenkinsfile.

pipeline {
    agent {
        docker { image 'node:7-alpine' }
    }
    stages {
        stage('Test') {
            steps {
                sh 'node --version'
            }
        }
    }
}

, и он работает, но он использует сервер Jenkins в качестве сервера Docker.

Я читаю Использование удаленного сервера Docker :

Использование удаленного сервера Docker

По умолчанию подключаемый модуль Docker Pipeline будет взаимодействовать с локальным демоном Docker,обычно доступ осуществляется через /var/run/docker.sock.

Чтобы выбрать сервер Docker не по умолчанию, например, с Docker Swarm, следует использовать метод withServer ().

ПередавURI и, необязательно, идентификатор учетных данных для проверки подлинности сертификата сервера Docker, предварительно настроенный в Jenkins, для метода с:

node {
    checkout scm

    docker.withServer('tcp://swarm.example.com:2376', 'swarm-certs') {
        docker.image('mysql:5').withRun('-p 3306:3306') {
            /* do things */
        }
    }
}

, и это работает, но использует сценарий конвейера.

Я также прочитал Указание метки Docker :

Указание метки Docker

По умолчанию конвейер предполагаетчто любой сконфигурированный агент способен запускать конвейеры на основе Docker.Для сред Jenkins с macOS, Windows или другими агентами, которые не могут запустить демон Docker, этот параметр по умолчанию может быть проблематичным.Конвейер предоставляет глобальную опцию на странице «Управление Jenkins» и на уровне папок для указания, какие агенты (по меткам) использовать для запуска конвейеров на основе Docker.

, но для использования метки потребуетсяполный подчиненный Jenkins с установленным sshd и пользователем Jenkins, постоянно подключенный к сети, и мастер Jenkins установит подчиненные библиотеки.Это звучит немного тяжело только для использования декларативных конвейеров вместо скриптовых конвейеров.

Как я могу построить на удаленном сервере Docker с декларативным конвейером?

1 Ответ

0 голосов
/ 28 февраля 2019

Я думаю, что вы смешиваете несколько вещей здесь.Что касается части документации об агенте , то часть агента используется для идентификации узла, на котором должен работать ваш этап, вместе со специальной конфигурацией и информацией.

Тег Docker, в свою очередь, дает информацию о том, что его следует запускать изнутри образа.

Это не оставляет вам места для подключения к внешнему докер-серверу, если вы не сделаете его узлом Jenkins с какой-то специальной меткой, например, 'docker-special'.Тогда вы можете сделать такие простые вещи, как

agent {
    docker {
        image 'maven:3-alpine'
        label 'docker-special'
    }
}

Документация на ярлыке докера

docker

Выполнить конвейер илистадия, с заданным контейнером, который будет динамически предоставлен на узле, предварительно настроенном для приема основанных на Docker конвейеров, или на узле, соответствующем необязательно определенному параметру метки.

Что касается вашего конкретного варианта использования.

В этой части документации jenkins упоминается шаблон коляски / расширенное использование, и они сразу переключаются на сценарии.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...