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

Използвам Elastic Beanstalk на Amazon, за да разположа приложението си чрез Git и имам подмодули в моя Git. Разбира се, когато гледам директориите, където трябва да са данните за подмодулите, там няма нищо, защото подмодулите не са инициализирани.

Очевидно Elastic Beanstalk не поддържа подмодули. Дали това е правилно? Ако е така, как мога да убедя Git да ми позволи да имам функциите на подмодул, но въпреки това да кача целия код на подмодула, когато натисна главното репо?


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


Отговори (4)


Elastic Beanstalk поддържа подмодули, ако просто се уверите, че Git е инсталиран на AMI, който използвате от Персонализиране и конфигуриране на AWS Elastic Beanstalk среди. Можете да направите това, като предоставите конфигурация във вашето git repo:

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

  • В този файл посочете зависимостите:

   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 gem (което използва 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 repos се обработват, докато компресирате изходния код на вашия проект за качването му в AWS. Ако не използвате git за вашия AWS проект, цялата директория на проекта (включително всички други git модули под поддиректории, които може да имате в нея) се компресира и изпраща до AWS. Ако използвате git, тогава целият регистриран или етапен код, с изключение на подмодулите, се компресира и изпраща на AWS. Git подмодулите се пропускат.

Написахме корекция за този проблем, като променихме поведението така, че подмодулите също да се добавят към компресирания архив. Можете да видите корекцията на github.com/uppercasebrands/awsebcli-3.10.1/compare/eb-deploy-submodule в нашето git repo, което е създадено от оригиналния пакет 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