Назад | Перейти на главную страницу

От Bitbucket к Elastic beanstalk - развертывание PHP

Контекст

Проект PHP настроен в облаке bitbucket. Код разрабатывается локально в XAMPP. Код работает в среде Amazon Web Service Elastic Beanstalk.

Проблема

Я фиксирую свои изменения локально, а затем отправляю их в Bitbucket. Теперь мне нужно выполнить развертывание из Bitbucket в экземпляре AWS Elastic Beanstalk.

Я не хочу, чтобы для этого использовались какие-либо другие инструменты, а также использовать zip-файл для загрузки в Elastic Beanstalk. Вместо этого выполняйте прямо из Bitbucket в Elastic Beanstalk. Как я могу это сделать?

У меня была аналогичная проблема, когда мне нужно было развернуть Elastic Beanstalk из Bitbucket. Хотя мое приложение является Python, следующее не зависит от языка.

  • Используйте конвейеры Bitbucket, чтобы заархивировать код и поместить его в ведро S3 с поддержкой версий (здесь важно управление версиями)
  • Создайте конвейер в AWS CodePipeline для получения zip-файла из корзины S3, в которую Bitbucket только что поместил этот пакет. AWS CP будет использовать тему уведомления о версиях, которая автоматически публикуется в системах AWS, для автоматического запуска.
  • Установите фазу развертывания конвейера в качестве среды Elastic Beanstalk.

Я использую этот метод уже некоторое время, и у меня не было с ним проблем. У нас есть другие разделы, которые относятся как к Bitbucket, так и к AWS Pipeline (тестирование и создание образов докеров), но этот метод должен работать нормально без фазы «сборки» в CodePipeline.

Используйте конвейеры bitbucket для создания процедуры, которая при передаче в ветвь устанавливает команды eb в конвейер, а затем использует командные подсказки eb для развертывания сайта в правильной среде.

Кажется, что не существует решения, которое позволяло бы выполнять развертывание непосредственно из Bitbucket в Elastic Beanstalk.

Однако, если вы используете репозиторий git на Bitbucket, вы можете развернуть его прямо из интерфейса командной строки в Elastic Beanstalk.

Это достигается за счет использования интерфейса командной строки EB вместе с Git.

http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/eb3-cli-git.html

Может, два года назад это было невозможно, но сейчас это легко. Настройте среду Elastic Beanstalk (при необходимости используйте фиктивный или пример кода). Затем в BitBucket добавьте свои AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY и AWS_DEFAULT_REGION в качестве переменных репозитория и добавьте шаги eb cli в свой bitbucket-pipelines.yml для развертывания.

Точные шаги конвейера зависят от вашего приложения, переменных среды и т. Д., Но это может быть так же просто, как

image: php:7.2.11


pipelines:
  branches:
    master:
      - step:
        - eb init my-elastic-beanstalk-app -p php
        - eb deploy my-elastic-beanstalk-environment

Есть еще один пример на https://github.com/loonpwn/harlanzw.com/blob/master/bitbucket-pipelines.sample.yml

Bitbucket команда была непреклонна, что они не предоставляют каких-либо решений. Скорее предложили сослаться на гугл. Я слышу от команды только отговорки, а не ответ. Это позор.

Ответ - решения нет!