Как включить push-уведомление в облачном хранилище cloudbees-jenkins для отправки в мой защищенный паролем частный реестр? - PullRequest
1 голос
/ 24 апреля 2019

При использовании этой настройки все работало, пока я не включил 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...