Невозможно отправить Docker Image в Artifactory в конвейере Jenkins с помощью плагина Artifactory. - PullRequest
0 голосов
/ 25 апреля 2018

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

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

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

...
        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'

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

EDIT: Основываясь на этом выпуске , я вернулся к своей первоначальной идее:

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 все равно не удалась.

Artifactory Plugin: 2.15.1
Артефакторная версия: 5.10.3

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

Ответы [ 2 ]

0 голосов
/ 06 мая 2018

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

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

0 голосов
/ 30 апреля 2018

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

...