8

Ich habe eine Knoten-Anwendung, die Grunt benötigt, um einen "Build" zu machen, bevor die Anwendung erfolgreich ausgeführt werden kann. (läuft concat/minification/revving des Quellcodes usw.). Ich habe dies auf einer EC2-Instanz mit SSH-Zugriff ausgeführt, wie ich nur SSH in das Verzeichnis und führen Sie Grunt als Teil des Bereitstellungsprozesses. Um dies zu automatisieren, verschiebe ich jetzt die Anwendung auf ElasticBeanstalk und habe Schwierigkeiten, die Anwendung erfolgreich zu starten. Der Grund für den Wechsel zu EB ist, die SSH-Schlüssel von den Live-Servern fernzuhalten, so dass diese EB-Instanzen ohne SSH-Zugriff eingerichtet werden.Run Grunt auf ElasticBeanstalk

Es scheint keine offizielle Dokumentation verfügbar zu sein. Könnte mich jemand in eine gute Richtung weisen, um das Obige zu erreichen? Ich muss grunt ausführen, bevor die Anwendung gestartet wird, so dass die Anwendung die Dateien zur Verfügung hat (sonst gibt es einen 404).

+0

Hier ist eine etwas verwandte Frage, die eine andere Möglichkeit bietet, es im Vergleich zu meinem Vorschlag zu tun: http://stackoverflow.com/questions/23444288/aws-elastic-beanstalk-run-grunt-task?rq=1 –

Antwort

12

Running Grunt wäre sehr ähnlich wie Running Gulp, also schließe ich meine Konfiguration unten ein.

Dies ist in einem .ebextensions Ordner an der Wurzel meines Projekts namens 01run.config. Sie können mehrere Konfigurationsdateien haben, sie in alphabetischer Reihenfolge ausgeführt werden (daher die am Anfang.)

Dieser im Grunde weisen nur den Prozess diese Befehle ausführen, um wieder, es ist in alphabetischer Reihenfolge getan, so Ich habe sie entsprechend benannt.

commands: 
    01get_sudo: 
    command: echo Defaults:root \!requiretty >> /etc/sudoers 
    02npm_install: 
    command: sudo yum -y --enablerepo=epel install nodejs npm 
    03npm_install_bower: 
    command: sudo npm install -g bower 
    04npm_install_gulp: 
    command: sudo npm install -g gulp 
    05yum_install_git: 
    command: sudo yum -y --enablerepo=epel install git 
container_commands: 
    01bower_install: 
    command: sudo bower install --allow-root 
    02gulp_sass: 
    command: sudo gulp sass 
  1. Get sudo Zugang
  2. installieren node.js und npm mit yum
  3. installieren Bower (mein schluck Prozess benötigt Bower)
  4. installieren schluck
  5. git installieren (von Bower erforderlich)
  6. Ich starte dann zwei Containerbefehle, die nach npm install und vor npm start auftreten:
    1. Bower installieren
    2. schluck sass

In Ihrem Fall würde man einfach entfernen Bower und git installiert, installieren Sie grunzen-cli und dann Grunzen laufen.


Da dies zu tun, habe ich die Notwendigkeit für das obige Verfahren entfernt, indem sie alle nach vorne vor der Installation und begehen die integrierten Dateien in das Git Repository zu tun. Es war zumindest eine gute Lernerfahrung, die mir viel mehr Kontrolle über meine ec2-Instanzen, die durch Bohnenstange bereitgestellt werden, gibt.

+0

Danke! Ich vermisste die sudo-Teile und die Übertragung der dist-Dateien zum Repo war etwas, was ich vermeiden wollte. – leaksterrr

+0

Hallo Kevin, ich bin neugierig auf deinen letzten Absatz. Warum war es so, als ob du die Build-Dateien für git passender warst als das Laufen? – Rail24

+1

Wenn ich die Build-Dateien festlege, muss ich mir keine Sorgen über das seltene Auftreten eines Build-Fehlers machen und würde schnellere Startzeiten bekommen. –

1

sich die Frage nicht genau beantworten, aber mit Kevin B letzte Bemerkung in Linie, das tue ich grunzen Aufgaben, einschließlich der Build, außerhalb von Elastic Beanstalk, und verwenden Sie .ebignore den Einsatz zu steuern. Wenn .ebignore vorhanden ist, folgt eb deploy anstelle von .gitignore. Dies erlaubt mir, den Build-Prozess außerhalb von Elastic Beanstalk zu kontrollieren, während Build-Artefakte aus meinem Git-Repo herausgehalten werden.

Zum Beispiel, wenn Build-Artefakte zu gehen.Bau/

.gitignore

node_modules 
.elastic_beanstalk 
... 
.build 

.ebignore

node_modules 
.elastic_beanstalk 
... 
.git 

Denken Sie daran, .git in .ebignore hinzufügen lokalen git Repo-Metadaten zu verhindern, eingesetzt zu werden. Außerdem finde ich, dass eb deploy alle Unterordner in einem ausgeschlossenen Ordner auswertet, wodurch die Bereitstellung unnötig verlangsamt wird. Ich musste vorübergehend node_modules woanders verschieben, bevor Sie eb deploy laufen, um es zu beschleunigen.

Verwandte Themen