В этой статье я расскажу как построить простой пайплайн для деплоя Spring Boot проекта на сервере используя GitHub Actions и Docker.  Содержание: Регистрация self-hosted раннера на VPS с ОС Linux и установленным Docker. Создание .yml файла с описанием пайплайна — базовая структура, операции и команды. Создание статус — бейджика.  Функция оповещений в мобильном приложении GitHub.  Что имеем Арендованный VPS с установленным Docker и docker-compose Репозиторий базового Spring Boot проекта с Dockerfile и docker-compose.yml Настройка раннера Деплоить будем на сервере. Для этого нужно настроить раннер. Логинимся на VPS. Раннер нельзя запустить от имени root пользователя, поэтому придется создать нового, не забыв предоставить ему права на использование Docker.   В репозитории переходим в Settings → Actions → Runners →  New self-hosted runner   Указываем параметры нашего VPS. У меня это Linux. Архитектура процессора - x64. После этого появятся автосгенерированные скрипты для настройки раннера. Вводим первую группу скриптов. Запускаем скрипт конфигурации. Из всех дефолтных значений я изменил только название раннера. Теперь можно запускать раннер. Для демонстрационных целей сделать это можно в фоновом режиме с помощью nohup. Для реальных проектов рекомендуется запускать раннер в качестве сервиса. Сделать это можно при помощи скрипта svc.sh, который автоматически загружается при настройке раннера. После установки и настройки раннера необходимо выполнить команду install.  Затем для исполнения станут доступны остальные команды.   Проверим статус раннера в GitHub. Создание пайплайна. Все скрипты пайплайнов должны лежать в специальной папке {проект}/.github/workflows . Создадим скрипт deploy-job.yml и поместим его в эту папку. В первой строчке укажем название пайплайна. Оно будет отображаться в GitHub. Затем укажем когда запускать этот пайплайн - в нашем случае пускай это будет при пуше в ветку master или develop. Затем начнем описывать джобы.  Первым делом будем запускать тесты.  Стоит отметить что тесты будут запускаться в облаке GitHub. На момент написания статьи GitHub бесплатно предоставляет 2.000 вычислительных минут в месяц.  Затем подготовим окружение - удалим старые контейнеры и имейджы. После этого запустим проект с помощью docker-compose. Итоговый файл:  Коммитим, пушим, ждем, смотрим на результат. Все работает. Теперь можем создать бейджик и запихнуть его в README.md. Шаги отмечены на картинке: После этого появится окно с настройкой бейджика. Дефолтные параметры я не менял. Копируем сгенерированную ссылку, вставляем в README.md и получаем следующее: Мобильные оповещения. Хотелось бы отметить функцию оповещений о работе пайплайнов в мобильном приложении GitHub. Включить ее можно в настройках. Выглядит это примерно вот так: В случае фейла можно даже посмотреть логи. Заключение В этой статья я описал процесс создания простого пайплайна GitHub Actions для деплоя Spring Boot проекта с использованием Docker.  Единственное, что в этой статье сильно привязано к программной реализации, это джоба тестирования в созданном пайплайне. Все остальные аспекты создания и настройки CI/CD универсальны для любых проектов, использующих Docker. Для дальнейшего изучения функционала GitHub Actions можно обратиться к официальной документации.  Разработчик, студент