Aus Ihrer Frage war nicht klar, ob Sie die git aws.push
Option bereits ausprobiert haben . Sie können einen Blogeintrag in AWSBlog für die Bereitstellung von Rack-basierten Anwendungen für AWS Elastic Beanstalk empfehlen. Um das gleiche zusammenzufassen, können Sie es in den folgenden einfachen Schritten tun:
eb init
eb start
git aws.push
Dazu müssen Sie natürlich AWS Elastic Beanstalk-Befehlszeilenprogramme herunterladen.
AFAIK, AWS Elastic Beanstalk ist noch nicht mit Git-Implementierungshaken integriert, aber es ist ziemlich einfach, wenn Sie bereits einen CI-Server wie Jenkins verwenden. Github lässt sich sehr gut in die meisten CI-Server integrieren. Sie können eine git push
Auslösung git aws.push
von Ihrem CI-Server erreichen, indem Sie einen neuen Jenkins-Job mit benutzerdefinierten Shell-Befehlen hinzufügen. Möglicherweise möchten Sie auch einen Test-Harness ausführen, bevor Sie dort ein neues Build ausführen. Jenkins oder Travis CI erledigen die Arbeit für Sie!
In Bezug auf die Ausführung von before_symlink
Typaufgaben unterscheidet sich AWS Elastic Beanstalk von einer herkömmlichen Capistrano-Bereitstellung. Es bündelt Ihren gesamten Code in einem ausführbaren Archiv und kopiert ihn einfach auf Knoten mit Lastenausgleich. Um before_symlink
ähnliche Aufgaben auszuführen, möchten Sie möglicherweise einige benutzerdefinierte Konfigurationsdateien schreiben und diese unter .ebextensions
dem Stammpfad Ihres Git-Repositorys ablegen. Wie ich es gemacht habe, ist das Hinzufügen einer .ebextensions/symlink.config
Datei. Hier ist ein Beispielcode zum Symlinking Ihrer database.yml
Datei auf dem Server.
container_commands: symlink-db: command: ln -sf /var/app/shared/database.yml $EB_CONFIG_APP_ONDECK/config/database.yml
Bitte beachten Sie, dass ich ein benutzerdefiniertes AMI mit einem /var/app/shared/
Verzeichnis betreibe, das ansonsten beim Starten eines Vanilla-Ruby-Containers nicht vorhanden ist. Darüber hinaus enthält die $EB_CONFIG_APP_ONDECK
Umgebungsvariable den aktuellen Namen des Implementierungsverzeichnisses (normalerweise /var/app/ondeck
), in den verschoben wird, /var/app/current
sobald die Bereitstellung abgeschlossen ist und bevor der Rails (Passenger) -Server neu gestartet wird, wodurch er für die Bearbeitung von Anforderungen verfügbar ist. Weitere Informationen zum Anpassen von AWS Elastic Beanstalk-Containern finden Sie hier .
Hoffe das hilft.