Итак, на моем сервере вместе с хранилищем nexus3 запущен автономный экземпляр drone . Теперь у меня есть проект java, который должен быть собран, протестирован и затем развернут в репозитории каждый pu sh, который работает нормально, пока мы не перейдем к части развертывания. Я нашел плагин на официальном сайте для плагинов Maven Auth , который должен создавать настройки. xml на основе конфигурации, которая работает (заставил мой конвейер выводить содержимое файла через cat и показал действительные настройки. xml файл). Следующий шаг настроен для запуска
mvn deploy -B -s settings.xml
По какой-то причине maven не использует имя пользователя и пароль, указанные в настройках. xml (сервер всегда возвращает несанкционированный Ошибка 401)
Весь .drone.yml:
kind: pipeline
name: default
type: docker
steps:
- name: compile
image: maven:3-jdk-8
commands:
- mvn compile -B -U
when:
event:
- push
- name: test
image: maven:3-jdk-8
commands:
- mvn test -B
when:
event:
- push
- name: authenticate
image: robertstettner/drone-mvn-auth
settings:
servers:
- id: some-id (same in pom.xml distribution repos)
username: username
password:
from_secret: repo_password
- name: deploy_repo
image: maven:3-jdk-8
commands:
- mvn deploy -B -gs settings.xml
when:
event:
- push
Несколько советов, почему это не работает, было бы допингом! Заранее спасибо!
Редактировать 2: Итак, я провел дальнейшее расследование и установил mitmproxy на своем сервере для анализа трафика c (Клиент -> Nginx SSL-завершение прокси -> mitmproxy - > работает nexus).
Для авторизации, очевидно, maven использует заголовок под названием «Авторизация». И содержимое «Basi c» + имя пользователя: пароль, закодированный в base64.
Оказывается, содержимое заголовка Authorization из запроса, выданного экземпляром дрона, искажено. Расшифровано это выглядит так:
Authorization: Basic USERNAME:[object Object]
вместо
Authorization: Basic USERNAME:password
Я собираюсь попытаться обойти
password:
from_secret: repo_password
и надеюсь настройки. xml файл сгенерирован правильно