Я написал декларативный конвейер в 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 с декларативным конвейером?