cnsass
@cnsass
The main thing that I did not give up

Самый простой deploy jar на linux сервер?

Имеется сервер на сокетах, сейчас мой ручной intergration выглядит так:
1. Пишу код;
2. Делаю билд;
3. Заливаю на сервер;
4. Останавливаю старый;
5. Запускаю новый;
Что можно использовать, что бы деплоить сразу на сервер?
  • Вопрос задан
  • 532 просмотра
Решения вопроса 1
Попробуй gradle и несколько плагинов shadow jar + https://gradle-ssh-plugin.github.io Для старта и рестарта jar придется написать просто bash скрипт:

Для старта (app.jar)
#!/usr/bin/env bash

realpath() {
    [[ $1 = /* ]] && echo "$1" || echo "$PWD/${1#./}"
}

APP_HOME=$(dirname "$(realpath "$0")")
APP_PID=$(<"$APP_HOME/app.pid")

if ps -p $APP_PID > /dev/null
then
    echo "Failed to start, service already started!"
    exit 1
fi

nohup java -jar -Dfile.ecoding=UTF-8 "$APP_HOME/app.jar" > "$APP_HOME/app.log" 2>&1 &

APP_PID=$!

echo $APP_PID > "$APP_HOME/app.pid"

echo "App has been started, pid = $APP_PID."


Для остановки:
#!/usr/bin/env bash

realpath() {
    [[ $1 = /* ]] && echo "$1" || echo "$PWD/${1#./}"
}

APP_HOME=$(dirname "$(realpath "$0")")
APP_PID=$(<"$APP_HOME/app.pid")

if ps -p $APP_PID > /dev/null
then
    echo "Shutdown app with pid = $APP_PID ..."
    kill -15 "$APP_PID"

    while ps -p $APP_PID > /dev/null
    do
        echo "Waiting ..."
        sleep 0.3
    done

    echo "Done!"
else
    echo "App is not running."
fi
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
al_gon
@al_gon
Maven+Ant или просто Ant, в зависимисти, от того как вы собираете.
Ответ написан
Комментировать
saboteur_kiev
@saboteur_kiev
software engineer
напишите скрипт на bash, который скопирует файл на удаленный сервер и перезапустит на нем нужный процесс (tomcat или вашу java)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы