AWS CodeDeploy с помощью Bamboo



мы разрабатываем приложение NodeJS и хотим запустить его в Amazon Cloud. Мы интегрировали «Bamboo» в другие наши приложения Atlassian. Bamboo передает файлы сборки в корзину S3 из Amazon. Проблема в том, как я могу переместить и запустить приложение с S3 на экземпляры EC2?

Вы можете найти мой файл appspec.yml во вложениях, а в моем каталоге сборки находятся следующие файлы:
- client | такие файлы, как index.html и т. д.
- сервер | такие файлы, как server.js и socketio.js
- appspec.yml
- readme



Есть у кого идеи? Я надеюсь, что он содержит всю важную информацию, которая вам нужна.

Спасибо :D


Вложения

version: 1.0
os: linux
files:
  - source: /
    destination: /


person L. Himstedt    schedule 25.08.2015    source источник
comment
Используете ли вы Bamboo Server или Bamboo Cloud (ранее Bamboo OnDemand? Кроме того, как вы в настоящее время «переносите файлы сборки в корзину S3 из Amazon», то есть с помощью какой задачи или инструмента?   -  person Steffen Opel    schedule 25.08.2015
comment
@SteffenOpel Мы используем версию с самостоятельным размещением, и у Bamboo есть задача AWS CodeDeploy, где вы можете ввести свои учетные данные, данные корзины и приложение/группу для развертывания кода.   -  person L. Himstedt    schedule 26.08.2015
comment
Я обновил свой ответ, поняв, что вы, похоже, упускаете некоторые важные части в своем appspec.yml.   -  person Steffen Opel    schedule 26.08.2015


Ответы (3)


Обновлять

Я только что понял, что вашему appspec.yml, похоже, не хватает важной части для развертывания приложения Node.js (и большинства других в этом отношении), а именно раздела hooks. Как указано в файлах спецификаций приложений AWS CodeDeploy , файл AppSpec используется для управления каждым развертыванием как серией событий жизненного цикла развертывания:

  • На этапах развертывания агент AWS CodeDeploy будет искать имя текущего события в разделе ловушек файла AppSpec. [...] Если событие найдено в разделе ловушек, агент AWS CodeDeploy получит список сценариев, которые необходимо выполнить для текущего шага. [...]

См., например, предоставленный Пример файла AppSpec (исключительно для иллюстрации, вам нужно будет создать собственный файл, подходящий для вашего приложения):

os: linux
files:
  - source: Config/config.txt
    destination: webapps/Config
  - source: source
    destination: /webapps/myApp
hooks:
  BeforeInstall:
    - location: Scripts/UnzipResourceBundle.sh
    - location: Scripts/UnzipDataBundle.sh
  AfterInstall:
    - location: Scripts/RunResourceTests.sh
      timeout: 180
  ApplicationStart:
    - location: Scripts/RunFunctionalTests.sh
      timeout: 3600
  ValidateService:
    - location: Scripts/MonitorService.sh
      timeout: 3600
      runas: codedeployuser

Без такой команды ApplicationStart у AWS CodeDeploy нет никаких инструкций, что делать с вашим приложением (помните, что CodeDeploy не зависит от технологии, поэтому, например, необходимо сообщить, как запустить сервер приложений).


Начальный ответ

Раздел Обзор развертывания в разделе Что такое AWS CodeDeploy? иллюстрирует процесс типичного развертывания AWS CodeDeploy:

введите здесь описание изображения

Ключевым аспектом вашего вопроса является шаг 4:

  1. Наконец, агент AWS CodeDeploy на каждом участвующем экземпляре извлекает версию из указанной корзины Amazon S3 или репозитория GitHub и начинает развертывание содержимого в этом экземпляре, следуя инструкциям в предоставленном файле AppSpec. [выделено мной]

То есть, как только вы запустили развертывание AWS CodeDeploy, все должно работать автоматически — соответственно, что-то, похоже, настроено не совсем правильно, причем наиболее распространенная проблема заключается в том, что группа развертывания фактически еще не содержит запущенных экземпляров. Подтвердили ли вы, что можете выполнить развертывание на своем инстансе EC2 из CodeDeploy через Консоль управления AWS?

person Steffen Opel    schedule 26.08.2015
comment
спасибо, но код не появляется на сервере. Я убрал хуки и хочу протестировать только передачу, но не могу найти файлы на сервере... теоретически, файлы должны появиться в каталоге /, но там ничего нет... - person L. Himstedt; 26.08.2015

Что вы увидите, если войдете в список развертываний консоли AWS CodeDeploy?

https://console.aws.amazon.com/codedeploy/home?region=us-east-1#/deployments

(соответственно изменить регион)

Также код будет загружен в /opt/codedeploy-agent/deployment-root/<agent-id?>/<deployment-id>/deployment-archive

И логи в /opt/codedeploy-agent/deployment-root/<agent-id?>/<deployment-id>/logs/scripts.logs

Убедитесь, что у агента есть возможность подключения и разрешения на загрузку выпуска из корзины S3. Это означает наличие подключения к Интернету и/или использование прокси-сервера в экземпляре (настройка http_proxy таким образом, чтобы его использовал code_deploy) и настройка профиля IAM в экземпляре с разрешениями на чтение корзины S3.

Проверьте журналы агента codedeploy, чтобы узнать, успешно ли он подключается: /var/log/aws/codedeploy-agent/codedeploy-agent.log

person Nestor Pina    schedule 31.08.2015

Вам нужно создать развертывание в развертывании кода, а затем развернуть новую версию, используя стрелку раскрывающегося списка в хранилище кода и URL-адрес корзины S3. Однако это должен быть zip/tar.gz/tar

person Yonkee    schedule 17.12.2015