Я использую 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
Это действительно ошибка, которая будет исправлена в ближайшее время?