Аутентификация контейнера Docker с помощью Github с использованием учетных данных хоста

#docker #github #visual-studio-code #azure-pipelines

#докер #github #visual-studio-код #azure-трубопроводы

Вопрос:

Я автоматизирую процесс, в котором конвейеры фабрики данных генерируются с помощью скрипта Python. Сценарий принимает входные данные из репозитория Github, где он размещен (назовем его A), и использует gitpython для фиксации и отправки выходных данных в другой репозиторий Github (скажем, B).

Я хочу сделать две вещи:

  1. Докеризация скрипта Python
  2. Автоматизация docker run внутри конвейеров Azure

Дело в том, что любой разработчик, имеющий доступ к репозиториям A и B, должен иметь возможность запускать сценарий локально, но его также можно запускать как часть CI в конвейерах Azure.

Я создал файл Dockerfile с необходимыми предварительными условиями (такими как Python и Git). У меня возникли проблемы с аутентификацией на Github. Моей первой мыслью было просто привязать репо A и репо B к контейнеру Docker с помощью:

 docker run -it   -v /repo/A:/workspace/repo/A   -v /repo/B:/workspace/repo/B  

…а затем используйте git из контейнера. Проводя локальное тестирование, я сделал следующие наблюдения:

  • Это работает идеально и по назначению при запуске контейнера в виде кода VS .девконтейнер.
  • При запуске локально за пределами VS-кода мне будет предложено ввести имя пользователя и пароль на Github. Даже после их поставки я получаю fatal: Authentication failed for 'https://github.com/my-project/repo-B' .

Как запустить контейнер Docker с помощью аутентификации Github его хоста? В основном копирование того, как это делает VS — код.

Кроме того, следующим шагом было бы сделать то же самое в агенте сборки конвейеров Azure: привязать репозитории A и B для монтирования к контейнеру Docker, а затем пройти аутентификацию на Github с помощью аутентификации агента (которая представляет собой подключение к службе Github, использующее приложение Azure Pipelines).

Мы будем очень признательны за любую помощь. К сожалению, я не могу поделиться файлом Dockerfile или кодом Python напрямую, потому что это рабочий проект. При необходимости я могу предоставить более подробную информацию о любом файле в анонимизированных фрагментах.