Из вашего вопроса не было ясно, если вы уже попробовали git aws.push
вариант. Вы можете отослать сообщение в блоге AWSBlog о развертывании приложений на основе стойки в AWS Elastic Beanstalk. Подводя итог, вы можете сделать это в следующие простые шаги:
eb init
eb start
git aws.push
Это, конечно, требует загрузки инструментов командной строки AWS Elastic Beanstalk.
К слову, AWS Elastic Beanstalk еще не имеет интеграции с ловушками развертывания Git, но это довольно просто, если вы уже используете CI Server, такой как Jenkins. Github может очень хорошо интегрироваться с большинством серверов CI. Вы можете добиться git push
запуска git aws.push
с вашего CI-сервера, добавив новое задание Jenkins с помощью пользовательских команд оболочки. Вы также можете выполнить тестовый жгут перед тем, как выложить новую сборку. Jenkins или Travis CI сделают всю работу за вас!
Что касается выполнения before_symlink
задач типа, то способ работы AWS Elastic Beanstalk отличается от традиционного развертывания Capistrano. Он объединяет весь ваш код в исполняемый архив и просто копирует его на узлы с балансировкой нагрузки. Для выполнения before_symlink
подобных задач вы можете написать несколько пользовательских файлов конфигурации и поместить их .ebextensions
в корневой каталог вашего Git-репозитория. Я сделал это, добавив .ebextensions/symlink.config
файл. Вот пример кода для символической ссылки вашего database.yml
файла на сервере.
container_commands: symlink-db: command: ln -sf /var/app/shared/database.yml $EB_CONFIG_APP_ONDECK/config/database.yml
Обратите внимание, что я запускаю пользовательский AMI с /var/app/shared/
каталогом, который, в противном случае, отсутствует при запуске ванильного контейнера Ruby. Кроме того, $EB_CONFIG_APP_ONDECK
переменная окружения содержит текущее имя каталога развертывания (обычно /var/app/ondeck
), которое перемещается /var/app/current
после завершения развертывания и до перезапуска сервера Rails (Passenger), что делает его доступным для обслуживания запросов. Узнайте больше о настройке контейнеров AWS Elastic Beanstalk .
Надеюсь это поможет.