#java #amazon-web-services #spring-boot #ssh #deployment
#java #amazon-веб-сервисы #весенняя загрузка #ssh #развертывание
Вопрос:
Я создал приложение spring boot, которое я могу запустить в экземпляре AWS EC2, и оно работает нормально, однако теперь я хотел бы автоматизировать процесс с помощью CodeDeploy, чтобы мне не приходилось использовать PuTTY для подключения к экземпляру, загрузки нового файла jar и запуска его вручную.
Моя проблема в том, что я не знаю, что написать в файле appspec.yml, чтобы:
- Остановите приложение
- Загрузите новый файл .jar, который находится внутри ZIP-файла в моей корзине S3 (эквивалентно # wget -N jarlink)
- Запустите приложение (эквивалентно # java -jar jarname)
Я знаю, что для этого мне нужны некоторые сценарии, однако я не знаю, где взять правильные.
Приветствия, Крис
Ответ №1:
Разобрался, мой файл appspec.yml выглядит следующим образом:
version: 0.0
os: linux
files:
- source: /artifact_name.jar
destination: /tmp
hooks:
ApplicationStop:
- location: stop-process.sh
timeout: 180
runas: root
ApplicationStart:
- location: start-process.sh
timeout: 180
runas: root
stop-process.sh:
#!/bin/bash
ps -ef | grep artifact_name.jar | grep -v grep | awk '{print $2}' | xargs kill
start-process.sh:
#!/bin/bash
java -jar /tmp/artifact_name.jar > /dev/null 2> /dev/null < /dev/null amp;
также включены оба артефакта скрипта в buildspec.yml:
version: 0.2
phases:
build:
commands:
- mvn clean install
artifacts:
files:
- target/artifact_name.jar
- appspec.yml
- scripts/start-process.sh
- scripts/stop-process.sh
discard-paths: yes