2015-04-19 16 views
5

Dostaję błąd przy wdrażaniu Elastic Beanstalk, ponieważ nie ma git na instancji. Jedna z zależności w moim pliku package.json jest zależna od repozytorium git i musi być git clone. Git nie jest zainstalowany w wystąpieniach. Próbowałem zainstalować go poprzez .ebextensions plik .conf podczas wdrażania, poprzez yum, ale kiedy ssh do instancji go nie ma.Instalowanie git poprzez .ebextensions na Elastic Beanstalk

Pytanie brzmi: jaki jest prawidłowy sposób instalacji i czy istnieje git na instancji Linux działającej na Elastic Beanstalk, zanim zostanie wywołana npm install?

Oto dziennik ukazujący błąd:

[2015-04-18T09:00:02.815Z] ERROR [1777] : Command execution failed: Activity failed. (ElasticBeanstalk::ActivityFatalError) 
caused by: + /opt/elasticbeanstalk/containerfiles/ebnode.py --action npm-install 
    npm WARN package.json [email protected] No repository field. 
    npm WARN package.json [email protected] No README data 
    npm WARN `git config --get remote.origin.url` returned wrong result (https://github.com/awslabs/dynamodb-document-js-sdk) undefined 
    npm WARN `git config --get remote.origin.url` returned wrong result (https://github.com/awslabs/dynamodb-document-js-sdk) undefined 
    npm ERR! git clone https://github.com/awslabs/dynamodb-document-js-sdk undefined 
    npm ERR! git clone https://github.com/awslabs/dynamodb-document-js-sdk undefined 
    npm ERR! Linux 3.14.35-28.38.amzn1.x86_64 
    npm ERR! argv "/opt/elasticbeanstalk/node-install/node-v0.12.0-linux-x64/bin/node" "/opt/elasticbeanstalk/node-install/node-v0.12.0-linux-x64/bin/npm" "--production" "install" 
    npm ERR! node v0.12.0 
    npm ERR! npm v2.5.1 
    npm ERR! code ENOGIT 

    npm ERR! not found: git 
    npm ERR! 
    npm ERR! Failed using git. 
    npm ERR! This is most likely not a problem with npm itself. 
    npm ERR! Please check if you have git installed and in your PATH. 
+1

Zobacz [tutaj] (http://stackoverflow.com/questions/13642171/elastic-beanstalk-ruby-raed-to-install-git-so-bundle-install-works-but-i) . –

+1

... i [tutaj] (https://github.com/npm/npm/issues/5967) –

+0

Dzięki @TimBiegeleisen, próbowałem w tym git jako pakiet yum w pliku con .ebextensions, próbowałem drugie podejście także z zależnościami, wciąż takie same. –

Odpowiedz

2

mogę myśleć o trzech sposobów można zapewnić git (lub jakąkolwiek zależność) jest zainstalowany w systemie przed npm install jest prowadzony.

  1. Zdefiniuj preinstall skrypt w package.json że instaluje git razie potrzeby.
  2. Możesz dodać script(file), używając rozszerzeń e-mail w katalogu hooks pre-appdeploy lub katalogu preinit hooks. Sugerowałbym preinitowy haczyk, ponieważ tam jest haczyk do instalowania pakietów. Po prostu ustaw ścieżkę skryptu na /opt/ebextensions/hooks/preinit/99_install_git.sh lub jeśli chcesz zrobić w pre-appdeploy, /opt/ebextensions/hooks/appdeploy/pre/99_install_git.sh, i spraw, aby plik był wykonywalny przy użyciu pola mode.
  3. Korzystanie z ebextensions do install a package.

Dla twojego przypadku użycia, myślę, że # 3 jest najlepszą opcją. Trochę późno, ale mam nadzieję, że okaże się przydatny

+0

To jest pomocne, dzięki! Ale OP mówi, że zawierał git jako pakiet yum w '' .elasticbeanstalk/*. Config''', który powinien zrobić to, co sugerujesz w # 3, prawda? Dlaczego więc EB to ignoruje? – ericpeters0n

+0

@ ericpeters0n Nie mam pojęcia. Zawsze uważałem, że łodyga fasoli jest zmienną bestią. Może to być sporadyczny problem z instancją. – elssar

5

Jeśli umieścisz plik konfiguracyjny w swoim .ebextensions folderu tak:

packages: 
    yum: 
    git: [] 

Upewnij się, że pakiet git jest w pliku konfiguracyjnym z wyższym wskaźnikiem realizacji to taki, który faktycznie wymaga gita. Powszechnie jest mieć go w pierwszym pliku konfiguracyjnym o nazwie: 00-packages.config.

+0

to jest to, czego używam i to działa. [aws doc] (https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/customize-containers-ec2.html#linux-packages) –

Powiązane problemy