Как получить объект изображения Docker в конвейере Дженкинса? - PullRequest
0 голосов
/ 27 марта 2020

У меня есть этот код в конвейере Дженкинса, и он запускается

def myImage = docker.build(...)
myImage.withRun(...) {img ->
    println img.id
}

IOW docker.build() возвращает некоторый объект конвейера Дженкинса Docker, который знает о функции withRun().

Но с этим кодом мне нужно каждый раз создавать Docker образ.

Что, если я хочу извлечь Docker образ из реестра? Как получить эквивалентный объект конвейера Дженкинса Docker, который тоже будет иметь функцию withRun()? Как я могу заставить этот (псевдо) код работать? Я говорю "псевдо", так как нет docker.pull(), о котором я знаю?

docker.withRegistry(...)
  def myImage = docker.pull('someImage:latest')
  myImage.withRun() (...) {img ->
    println img.id
  }
}

1 Ответ

0 голосов
/ 27 марта 2020

Использование Docker с конвейером в документации Jenkins охватывает типичные случаи. Это описано в разделе Запуск контейнеров "sidecar" : вы можете вызвать docker.image('someImage:latest'), чтобы получить объект изображения, и его метод withRun при необходимости вытянет изображение.

docker.withRegistry(...) {
  docker.image('someImage:latest').withRun() { container ->
    println container.id
  }
}

Сам сервер Jenkins имеет документацию по глобальным переменным; Я не могу легко найти каноническую онлайн-справку, но попробуйте перейти на /pipeline-syntax/globals на локальном сервере Jenkins и найти объект docker. Вы можете вручную image.pull(), если вам нужно (хотя обратите внимание, что .withRun() будет извлекать изображение самостоятельно, если оно еще не существует локально).

Все ваши примеры пытаются распечатать идентификатор изображение. Это не похоже на свойство объекта image; image.id может существовать, но не может быть информативным

def image = docker.image('someImage:latest')
image.pull()
echo image.id // will print "someImage:latest"

Если вам действительно нужно это знать, вы можете запустить docker inspect, чтобы найти его.

sh "docker inspect -f '{{ .Id }}' ${image.id}"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...