Автоматизация всегда была ключевой задачей в жизненном цикле разработки программного обеспечения (SDLC). Используя правильные инструменты, оцифруйте повторяющиеся процессы разработки, чтобы повысить производительность и улучшить качество и затраты. Команды разработчиков все чаще вынуждены выпускать приложения быстро и без проблем.

С помощью AWS Elastic Beanstalk вы можете быстро развертывать приложения и управлять ими в облаке AWS, не беспокоясь об инфраструктуре, в которой выполняются эти приложения. AWS Elastic Beanstalk упрощает управление без ограничения выбора или контроля. Вы просто загружаете свое приложение, и AWS Elastic Beanstalk автоматически обрабатывает детали выделения емкости, балансировки нагрузки, масштабирования и мониторинга работоспособности приложения.

Travis CI может автоматически развернуть ваше приложение в Elastic Beanstalk после успешной сборки. Если вы не знаете о Travis CI, можете прочитать документацию.

Чтобы развернуть на AWS Elastic Beastalk, добавьте в свой .travis.yml следующее:

  • access-key-id: Идентификатор ключа доступа к AWS, полученный из вашей Консоли AWS.
  • secret-access-key: Зашифрованный секретный ключ AWS, полученный из вашей Консоли AWS.
  • region: должен быть регион, в котором работает приложение Elastic Beastalk, например us-east-1.
  • app: Название приложения.
  • env: среда Elastic Beanstalk, в которой будет развернуто приложение.
  • bucket_name: название сегмента, в который нужно загрузить приложение.
deploy:
  provider: elasticbeanstalk
  access_key_id: <access-key-id>
  secret_access_key:
    secure: "Encypted <secret-access-key>="
  region: "us-east-1"  
  app: "example-app-name"
  env: "example-app-environment"
  bucket_name: "the-target-S3-bucket"
YAML

В качестве альтернативы используйте инструмент настройки командной строки Travis CI, чтобы добавить развертывание travis setup elasticbeanstalk.

Создание приложения без его развертывания #

Чтобы создать приложение без его развертывания, добавьте only_create_app_version: "true" в свой .travis.yml, для получения дополнительной информации перейдите здесь.

Дополнительные настройки

  • zip_file: ZIP-файл для развертывания. Вам также необходимо установить skip_cleanup, чтобы Travis CI не удалял zip-файл в конце сборки. Если это не указано, будет создан zip-файл из всех файлов, которые являются частью тестируемого репозитория (определяется с помощью git ls-files).
  • bucket_path: место в сегменте, в которое нужно загрузить приложение.

Переменные среды

Доступны следующие переменные среды:

  • ELASTIC_BEANSTALK_ENV: используется, если в вашем .travis.yml не задан ключ env.
  • ELASTIC_BEANSTALK_LABEL: Имя ярлыка новой версии.
  • ELASTIC_BEANSTALK_DESCRIPTION: Описание новой версии. По умолчанию используется последнее сообщение фиксации.

Выполнение команд до и после развертывания #

Иногда вы хотите запускать команды до или после развертывания. Для этого можно использовать этапы before_deploy и after_deploy. Они будут срабатывать только в том случае, если Travis CI действительно развертывается.

before_deploy: "echo 'ready?'"
deploy:
  ..
after_deploy:
  - ./after_deploy_1.sh
  - ./after_deploy_2.sh

Пример полного кода

language: node_js
node_js:
- 6.9.1
before_script:
script:
before_deploy:
- rm -rf .tmp
- rm -rf .DS_Store
- rm -rf node_modules
- export ELASTIC_BEANSTALK_ENV=node-server-${TRAVIS_BRANCH}
- zip -r --exclude=\*.git\* --exclude=\*.DS_Store\* --exclude=\*test\  node-server.zip
  .
- export ELASTIC_BEANSTALK_LABEL=git-$(git rev-parse --verify HEAD --short)
- export ELASTIC_BEANSTALK_DESCRIPTION=https://github.com/sumn2u/node-server/tree/$(git
  rev-parse HEAD)
after_deploy:
- rm node-server.zip
deploy:
  provider: elasticbeanstalk
  access_key_id:<access-key-id>
  secret_access_key: "${SECRET_ACCESS_KEY_NODE}"
  zip-file: node-server.zip
  skip_cleanup: true
  region: us-east-1
  app: node-server
  only_create_app_version: false
  
env:
  global:
    secure: <secret-access-key>=

Заключение

Кажется, просто, не правда ли? Мы можем настраивать приложения в зависимости от наших потребностей, а также есть другие способы автоматизации процесса развертывания.