Развертывание частных пакетов Github Python на Heroku без раскрытия учетных данных в коде

Недавно мы столкнулись с проблемой развертывания в среде heroku python.

В развертывании heroku python он будет выполняться pip install requirements.txt и установить пакеты в файл. Но когда у вас есть частный пакет, все становится сложнее.

Цель

Что мы хотим сделать, так это установить наш частный пакет, который находится на github. Просто успешно выполните одну из следующих команд:

  • pip install git+
  • pip install git+ssh://github.com/my_account/myrepo.git
  • pip install git+

Сложность здесь в том, что вы не хотите фиксировать какие-либо учетные данные или пароль в git, потому что это вызывает множество проблем с безопасностью. Итак, как сообщить героку учетные данные в сборке, является ключевым моментом этой проблемы.

Сторонние решения Buildpack

На самом деле, есть некоторые сторонние сборки, поддерживающие установку токенов github или ssh-ключей в средах:

Но после нашего обсуждения мы решили не использовать сторонние сборки по следующим причинам:

  • обслуживание: каждый, кто присоединяется к связанным проектам, должен знать пакет сборки и поддерживать его, если что-то изменится.
  • безопасность: мы не знаем, что произойдет, если мы не проверим код.

(Я просмотрел код, оба они довольно просты и довольно полезны. Вы можете настроить свои учетные данные в переменных среды, и пакеты сборки будут установлены для ваших целей.)

Решение без использования сторонних пакетов сборки

Проведя опрос по сборочным пакетам heroku, мы нашли хорошее решение, которое помогает нам решить эту проблему. Чтобы узнать решение, нам нужно сначала узнать больше о том, как работает пакет сборки heroku python. Сборочный пакет Herkuo python выполнит следующие команды по порядку:

  1. bin/detect
  2. bin/pre_compile
  3. bin/compile: на этом шаге он выполнит pip install -r requirments.txt здесь.
  4. bin/post_compile
  5. bin/release

Со знанием дела мы попробовали шаги:

  1. Настройка переменных среды GITHUB_USER а также GITHUB_PASSWORD
  2. Поместите файл bin/pre_compile с кодом генерации ссылок, например:


echo "Generate myrepo to requirements.txt"
MY_REPO_GIT="git+https://${GITHUB_USER}:${GITHUB_PASSWORD}@github.com/my_account/myrepo.git"

echo MY_REPO_GIT >> requirements.txt

и он создаст ссылку на частные репозитории с информацией о пользователе для requirements.txt перед выполнением bin/compile. Наконец, с помощью этого решения он может установить все, что вам нужно.

Неудачная попытка

Мы пытались использовать setup.py сделать настройку при установке, но это не сработало, потому что думает команда heroku setup.py может делать все, и это небезопасно, если выставлять на нем все настройки среды сборки.

Мысли

Это довольно интересное путешествие, когда я знаю, как работает пакет сборки, и выясняет код, ха-ха. Но pre_compile кажется устаревшей функцией в героку. Не уверен, когда его уберут.

использованная литература

Похожие записи

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *