При использовании этой настройки все работало, пока я не включил htpasswd
.
Насколько я могу судить, все настроено правильно, так что если это действительно так;тогда это ошибка?Я заметил, что в выводе консоли конвейера он ссылается на withDockerRegistry
, где я фактически использовал withRegistry
.
Config
Чтобы было ясно, что эта настройка работала как небезопасный частный реестр, который Дженкинс мог выдвинутьк.Установки SSL не было и не было.ЕДИНСТВЕННОЕ отличие заключалось в том, что htpasswd
Конфигурация реестра
- Я запускаю реестр с виртуальной машины VirtualBox, работающей с использованием образа
ubuntu/bionic64
из vagrant - Виртуальная машина настроена с помощью Docker и имеет Docker, работающий
- Реестр работает в контейнере с использованием образа
registry:2
в сети nginx-proxy
- Реестр доступен на
http://registry.exp
myhost
файл имеет registry.exp
, указывающий на мой VM IP
на 10.20.1.29
- В реестре настроено
htpasswd
с использованием docker run --entrypoint htpasswd registry:2 -Bbn {{htpasswd_user}} {{htpasswd_pw}} >> /registry/auth/htpasswd
- Я могу войти в свой браузер.
Конфигурация Jenkins
- Я запускаю jenkins в Docker на моем Mac из
cloudbees/cloudbees-jenkins-distribution
образа. - Дженкинс доступен по
localhost:8080
- Я добавил свое имя пользователя и пароль к учетным данным Jenkins для
http://registry.exp
и сохранил его с идентификатором registry-login
Конфигурация приложения
- У меня
example-app
настроено на github сервере example-app
имеет Dockerfile
и Jenkinsfile
На моей локальной машине я могу сделать
docker build -t example-app --no-cache .
docker login --username docker registry.exp
docker push registry.exp/example-app
Мой Jenkinsfileвыглядит следующим образом
pipeline {
agent any
stages {
stage('Deploy Image') {
steps{
script {
docker.withRegistry('http://registry.exp', 'registry-login'){
docker.build('example-app').push('latest')
}
}
}
}
}
}
Running From Jenkins
Console Output
в jenkins после извлечения репозитория github и построения образа докера.
...
[Pipeline] withDockerRegistry
Wrote authentication to /var/jenkins_home/.dockercfg
[Pipeline] {
[Pipeline] sh
+ docker build -t portfolio-app .
Sending build context to Docker daemon 41MB
...
Successfully built 5cd890711511
Successfully tagged example-app:latest
[Pipeline] dockerFingerprintFrom
[Pipeline] sh
+ docker tag example-app registry.exp/example-app:latest
[Pipeline] sh
+ docker push registry.exp/example-app:latest
The push refers to repository [registry.exp/example-app]
4dbf42572f81: Preparing
83fc1127b6ec: Preparing
31c9a8db3bb1: Preparing
487b885434b5: Preparing
d2968d4fb613: Preparing
8170f2d5c43d: Preparing
a464c54f93a9: Preparing
8170f2d5c43d: Waiting
a464c54f93a9: Waiting
no basic auth credentials