У меня есть два вопроса к следующему примеру:
pipeline {
agent { label "docker" }
stages {
stage('Build') {
agent {
docker {
image 'maven:3.5.0-jdk-8'
}
}
steps {
...
}
}
}
}
Вопрос 1:
Когда я объявляю агента на верхнем уровне Jenkinsfile, это означает, что он будетиспользуется для всех следующих этапов.Так в чем же разница между:
agent { label "docker" }
и
agent {
docker {
image 'maven:3.5.0-jdk-8'
}
}
Первый из них будет использовать агент Docker, а второй будет использовать агент Docker с образом Maven в качестве исполняемой среды?Где сконфигурирован / установлен агент метки «docker»?
Вопрос 2:
Как работает метка label ?Я знаю, что где-то уже создан агент, и, используя метку, я просто указываю на него - как в примере выше: по умолчанию я использую агент "docker"?это также означает, что в течение steps {...}
этот агент будет переопределен maven agent?
Вопрос 3:
Последний вопрос для следующего примера:
pipeline {
agent {
docker {
image 'maven:3-alpine'
args '-v ... -e ...'
}
}
stages {
stage('Maven Build') {
steps {
sh '...'
}
}
stage('Docker push') {
agent {
docker 'openjdk:8-jdk-alpine'
}
steps {
script {
docker.build("my-image")
}
}
}
}
post {
...
}
}
Я хочу построить первый этап, используя докер-контейнер с maven: 3-alpine image.Во время сборки выводится следующая ошибка:
...tmp/durable-54b54bdc/script.sh: line 1: docker: not found
Итак, я изменил этот пример, вот рабочий результат:
pipeline {
agent any
stages {
stage('Docker push') {
steps {
script {
docker.build("my-image")
}
}
}
}
}
Как это работает агент любой вэтот случай?Какой агент может выполнить docker.build?