2015-04-19 3 views
5

Si verifica un errore durante l'implementazione su Beanstalk elastico, perché non c'è git sull'istanza. Una delle dipendenze nel mio package.json dipende da un repository git e deve essere git clone. Git non è installato nelle istanze. Ho provato a installarlo tramite il file .ebext .conf durante la distribuzione, tramite yum, ma quando eseguo ssh nell'istanza non c'è.Installazione di git tramite .ebextensions su Beanstalk elastico

La domanda è: qual è il modo corretto di installare ed eseguire git su un'istanza Linux in esecuzione su Elastic Beanstalk prima che venga richiamata l'npm install nell'istanza?

Ecco il registro che mostra l'errore:

[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]2.0.0 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

Dai un'occhiata [qui] (http://stackoverflow.com/questions/13642171/elastic-beanstalk-ruby-rails-need-to-install-git-so-bundle-install-works-but-i) . –

+1

... e [qui] (https://github.com/npm/npm/issues/5967) –

+0

Grazie a @TimBiegeleisen, ho provato a includere git come pacchetto yum nel file con estensione .ebext, ho provato il secondo approccio anche con le dipendenze, sempre lo stesso. –

risposta

2

Mi vengono in mente tre modi si potrebbe garantire git (o qualsiasi dipendenza) è installato sul sistema prima npm install viene eseguito.

  1. definire uno script preinstall nel vostro package.json che installa git, se necessario.
  2. È possibile aggiungere uno script(file), utilizzando le estensioni eb nella directory degli hook di pre-appdeploy o la directory dei hook di preinit. Suggerirei il gancio preinit, poiché è lì che si trova il gancio per installare i pacchetti. Basta impostare il percorso del tuo script su /opt/ebextensions/hooks/preinit/99_install_git.sh, o se vuoi fare in pre-appdeploy, /opt/ebextensions/hooks/appdeploy/pre/99_install_git.sh, e rendere il file eseguibile usando il campo mode.
  3. Utilizzare le estensioni su install a package.

Per il tuo caso d'uso, penso che # 3 sia l'opzione migliore. Un po 'in ritardo, ma spero vi sia utile

+0

Questo è utile, grazie! Ma l'OP dice che ha incluso git come pacchetto yum in un '' '.elasticbeanstalk/*. Config''' - che dovrebbe fare ciò che suggerisci nel # 3, corretto? Allora perché EB lo ignora? – ericpeters0n

+0

@ ericpeters0n Non ne ho idea. Ho sempre trovato che la pianta di fagioli è una bestia instabile. Potrebbe essere un problema intermittente con l'istanza. – elssar

5

Se si mette un file di configurazione nella vostra cartella .ebextensions come questo:

packages: 
    yum: 
    git: [] 

assicurarsi che il pacchetto git è in un file di configurazione con un indice più elevato di esecuzione poi uno che in realtà richiede git. È comune averlo in un primo file di configurazione chiamato: 00-packages.config.

+0

questo è quello che sto usando e funziona. [aws doc] (https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/customize-containers-ec2.html#linux-packages) –