создайте файл appspec.yml для развертывания ec2

#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