AWS Elastic Beanstalk + подмодули Git

Я использую Amazon Elastic Beanstalk для развертывания своего приложения через Git, и у меня есть подмодули в моем Git. Конечно, когда я смотрю на каталоги, где должны быть данные для подмодулей, там ничего нет, потому что подмодули не были инициализированы.

По-видимому, Elastic Beanstalk не поддерживает подмодули. Это верно? Если да, то как я могу убедить Git позволить мне иметь функции подмодуля, но при этом загружать весь код подмодуля, когда я нажимаю основной репозиторий?


person iLoch    schedule 14.08.2013    source источник


Ответы (4)


Elastic Beanstalk поддерживает подмодули, если вы просто убедитесь, что Git установлен на AMI, который вы используете Настройка и настройка сред AWS Elastic Beanstalk. Вы можете сделать это, предоставив конфигурацию в своем репозитории git:

  • Создайте файл конфигурации с расширением .config (например, myapp.config) и поместите его в каталог верхнего уровня .ebextensions вашего репозитория git.

  • В этом файле укажите зависимости:

   packages: 
      <name of package manager>:
         <package name>: <version>

Например:

   packages:
      yum:
         git: []
  • убедитесь, что вы сопоставляете name of package manager с используемым вами AMI, например, yum для Amazon Linux, apt для Ubuntu.

  • вам, вероятно, придется адаптировать свой скрипт сборки для инициализации подмодулей, поскольку EB не сделает это за вас

  • зафиксировать, нажать и развернуть и перейти

person godspeedelbow    schedule 28.03.2014

Какой контейнер? Java, Ruby и т. д.?

Существуют разные инструменты развертывания, вы не просто привязаны к командной строке eb, доступной на aws. Я работаю над гемом config/rake (который использует eb_deployer), который я буду выпускать короче, это просто использует zip-файл, а не git push, так что это сработает. Вы также можете попробовать ebs-deploy.

person kross    schedule 14.08.2013
comment
Я использую узел. Хотя это хороший момент, интересно. Я также рассматривал возможность запуска сценария сборки узла после установки, что, вероятно, я и сделаю. - person iLoch; 15.08.2013
comment
Наконец-то я доделал жемчужину. Идеи можно найти на github.com/alienfast/elastic-beanstalk. - person kross; 16.08.2013

Если вы используете awsebcli, установленный через pip, это может вам помочь.

Мы нашли исходный код клиента AWS-EB версии 3.10.1 на PyPi.

Проблема заключается в том, как обрабатываются репозитории git при архивировании исходного кода вашего проекта для его загрузки в AWS. Если вы не используете git для своего проекта AWS, весь каталог проекта (включая любые другие модули git в подкаталогах, которые у вас могут быть в нем) архивируется и отправляется в AWS. Если вы используете git, то весь зарегистрированный или подготовленный код, кроме подмодулей, заархивируется и будет отправлен в AWS. Подмодули Git пропускаются.

Мы написали исправление для этой проблемы, изменив поведение таким образом, чтобы подмодули также добавлялись в заархивированный архив. Вы можете увидеть исправление на github.com/uppercasebrands/awsebcli-3.10.1/compare/eb-deploy-submodule в нашем репозитории git, созданном из исходного пакета PyPi.

Вы можете установить исправленную версию awsebcli-3.10.1, которая теперь поддерживает подмодули, используя pip:

pip install --upgrade git+https://github.com/uppercasebrands/awsebcli-3.10.1.git@eb-deploy-submodule

person Uppercase Brands    schedule 18.05.2017

Если вы используете CodePipeline, есть способ использовать CodeBuild для получения всех подмодулей и автоматического предоставления этого артефакта Elastic Beanstalk: https://medium.com/@cristiano.ventura/working-with-git-submodules-in-codepipeline-83e843e5d0a

person Kirk Hammett    schedule 26.10.2020