Я настроил наш артефактный экземпляр, используя файл метод пути к репозиторию. Я пытаюсь отправить изображение, созданное в Jenkins, в Artifactory, но, похоже, он игнорирует сам путь к репозиторию.
def dockerImage = _dockerImage("kl_alpha")
docker.withRegistry( "https://artifactory-dev.foobar.com/docker-local", "someCreds") {
// def dockerImage = docker.build("kl_alpha:$BUILD_NUMBER", "./")
dockerImage.push()
dockerImage.push("latest")
}
Вывод в Jenkins выглядит примерно так
+ docker push artifactory-dev.foobar.com/kl_alpha:25
The push refers to repository [artifactory-dev.foobar.com/kl_alpha]
Как видите, он игнорирует локальную часть адреса, относящуюся к докеру. Любые идеи?
Итак, вы говорите, что имя образа должно быть docker-local/kl_alpha ?
В этой ситуации я считаю, что это будет ожидаемый аргумент в пользу Docker и плагина Docker для Jenkins Pipeline.
Можете ли вы добавить вышеизложенное в ответ, и я отмечу это как таковое :)
Для Docker и подключаемого модуля Docker для Jenkins Pipeline репозиторий является частью аргумента образа, а не реестра. В целом это будет выглядеть так:
docker.withRegistry('<registry url>') {}
def dockerImage = docker.build('<repository>/<image name>:<tag>')
}
Обратите внимание, что в документации реестра Artifactory Docker для Jenkins Pipeline иногда используется термин «репозиторий», хотя на самом деле он означает «реестр», и это может сбивать с толку и вводить в заблуждение. Также обратите внимание, что некоторые изображения не имеют аргумента репозитория, поскольку они являются официальными.
В вашей ситуации код будет выглядеть так:
docker.withRegistry('https://artifactory-dev.foobar.com', 'someCreds') {
def dockerImage = docker.build("docker-local/kl_alpha:${BUILD_NUMBER}", './')
dockerImage.push()
dockerImage.push('latest')
}
Репозиторий будет частью аргумента имени образа, а не реестра.