Не удается отправить изображение Docker в Artifactory в конвейере Jenkins с помощью плагина Artifactory

Я использую Docker Registry на Artifactory. Я могу тянуть / толкать изображения с помощью команд докера. Теперь я пытаюсь протолкнуть изображение с помощью линии Дженкинса.

Изображение называется registry-url/docker/image:latest, У меня есть Docker репозиторий на Artifactory, который называется docker, (Я могу тянуть и подтолкнуть к этому репо с помощью команд докера).

Этот этап описывает мою конфигурацию Artifactory:

...
        stage('Deploy Docker image'){
            steps {
                script {
                    def server = Artifactory.server 'xxx'
                    def rtDocker = Artifactory.docker server: server
                    def buildInfo = rtDocker.push('registry-url/image:latest', 'docker')
                    //also tried:
                    //def buildInfo = rtDocker.push('registry-url/docker/image:latest', 'docker') 
                    //the above results in registry/docker/docker/image..
                    server.publishBuildInfo buildInfo
                }
            }
        }
...

Когда я использую разные пути, я сталкиваюсь с manifest.json ошибка, которая, вероятно, нормально. Я могу загрузить файл manifest.json вручную: https://registry-url/artifactory/docker/image/latest/manifest.json,

Я использую довольно новую версию Docker для Jenkins:

Docker version 18.01.0-ce, build 03596f51b1

Все идет нормально. Но когда я запускаю конвейер, я получаю следующую ошибку в Jenkins (это занимает 50 секунд):

Pushing image: registry-url/image:latest
...
com.github.dockerjava.api.exception.DockerClientException: Could not push image: unknown: Not Found
    at com.github.dockerjava.core.command.PushImageResultCallback.awaitSuccess(PushImageResultCallback.java:49)
    at org.jfrog.hudson.pipeline.docker.utils.DockerUtils.pushImage(DockerUtils.java:60)
    at org.jfrog.hudson.pipeline.docker.utils.DockerAgentUtils$3.call(DockerAgentUtils.java:213)
    at org.jfrog.hudson.pipeline.docker.utils.DockerAgentUtils$3.call(DockerAgentUtils.java:205)
    at hudson.remoting.UserRequest.perform(UserRequest.java:153)
    at hudson.remoting.UserRequest.perform(UserRequest.java:50)
  ...

В журналах Artifactory я вижу:

2018-04-25 14:24:26,663 [http-nio-8081-exec-xx] [ERROR] (o.a.a.d.r.DockerResource:153) - Unsupported docker v2 repository request for 'image'
2018-04-25 14:24:46,684 [http-nio-8081-exec-xx] [ERROR] (o.a.a.d.r.DockerResource:153) - Unsupported docker v2 repository request for 'image'
2018-04-25 14:24:46,689 [http-nio-8081-exec-xx] [ERROR] (o.a.a.d.r.DockerResource:153) - Unsupported docker v2 repository request for 'image'
2018-04-25 14:24:46,702 [http-nio-8081-exec-xx] [ERROR] (o.a.a.d.r.DockerResource:153) - Unsupported docker v2 repository request for 'image'

Что я пропускаю или делаю неправильно?

РЕДАКТИРОВАТЬ: На основе этого вопроса я вернулся к своей первоначальной идее:

def buildInfo = rtDocker.push('registry-url/docker/image:latest', 'docker') 

Я попробовал построить снова. Ошибка:

Could not find manifest.json in Artifactory in the following path: https://registry-url/artifactory/docker/docker/image/latest/manifest.json

Дважды "докер" в пути, и это, кажется, не работает. НО когда я проверяю в Artifactory изображение там... я также могу вытащить изображение. Кажется, все в порядке, но сборка jenkins все еще не работает.

Артефакторный плагин: 2.15.1
Артефакторная версия: 5.10.3

Это действительно ошибка, которая будет исправлена ​​в ближайшее время?

2 ответа

Решение

Artifcatory может быть настроен как реестр Docker с или без обратного прокси. Похоже, что ваш Artifactory не настроен с использованием обратного прокси-сервера (без прокси-конфигурации). Вы можете прочитать больше о параметрах конфигурации здесь.

В версии 2.16.1 плагина Jenkins Artifactory добавлена ​​поддержка конфигурации без прокси. Обновление вашего Artifactory Plugin должно решить вашу проблему.

Попробуйте следовать этому примеру. Здесь у нас есть конвейер Jenkins для извлечения / отправки образа докера в / из Artifactory: https://github.com/jfrogtraining/kubernetes_example/blob/master/docker-app/Jenkinsfile

Другие вопросы по тегам