Самый простой способ развертывания с помощью Gradle

Самый простой способ развертывания с помощью Gradle

12 мая 2022 г.

Вот самые простые шаги, необходимые для создания развертывания из вашего локального репозитория GIT на удаленный сервер.


Цель


Когда вы запускаете git push, разверните последний дистрибутив master ветки на сервере без подготовки на стороне сервера.



Вступление


Помимо написания кода, инди-разработчики должны думать о непрерывном предоставлении своих услуг. И часто настройка конвейера развертывания — нетривиальная задача: нужно настроить Jenkins, Kubernetes, Git Hooks и многие другие технологии. Помимо того, что они требуют такого ценного программистского ресурса, как время, необходимое для их изучения, они также потребляют аппаратные ресурсы. Но что делать, если у меня есть линукс-сервер на несколько гигабайт, где я хочу разместить, например, свой небольшой блог с нулевыми конфигами?


gradle-ssh-plugin


Как автор плагина, я обещаю, что вы не найдете более простого способа развертывания, чем этот.


Предпосылки


Если у вас есть удаленный сервер Linux, у вас должен быть файл id_rsa.


При настройке удаленного сервера Linux вам необходимо выбрать способ безопасного подключения к нему. Хотя пароли являются одним из способов проверки личности пользователя, пароли имеют множество уязвимостей и могут быть взломаны методом грубой силы. Ssecure ключи Shell, более известные как SSH-ключи , часто используются вместо паролей, поскольку они обеспечивают более безопасный способ подключения к удаленным серверам Linux. Являясь частью криптографического сетевого протокола Secure Shell, ключи SSH также позволяют пользователям безопасно выполнять сетевые службы в незащищенной сети, например отправлять текстовые команды на удаленный сервер или настраивать его службы.


Если у вас нет этого ключа, давайте создадим его - запустите эти команды на вашем локальном компьютере:


  1. ssh-keygen -m PEM -t rsa -b 2048

  1. чмод 400 \~/.ssh/id_rsa

  1. ssh-copy-id -i .ssh/id_rsa.pub root@host.domain

Теперь вам нужно скопировать файл \~/.ssh/id_rsa с локальной машины в корень вашего проекта, который нужно развернуть.


🎯 Быстрый старт


В файле корневого проекта build.gradle.kts:


```java


плагины {


id("online.colaba.ssh") версия "1.8.17"


группа = "онлайн.colaba"


Это все! После выполнения задачи с определенной оценкой ваш дистрибутив кода будет доставлен на удаленный сервер.


Эта задача скопирует папки и файлы с локального компьютера на удаленный узел \~/${project.name}/... папка.


Вы можете указать хост, или он будет вычисляться из project.group (пример выше)


```java


задачи {


SCP {


хост = "colaba.online"


Запустить задачу развертывания:


```javascript


градиент scp


🔮 Персонализация:


  1. Зарегистрируйте новую задачу в файле build.gradle.kts:

```javascript


зарегистрироваться("customSshTask", Ssh::class) {


хост = "мой-домен.com"


пользователь = "корень"


градиент = правда


интерфейс = ложь


докер = правда


нгинкс = правда


каталог = "дистрибутив"


run = "cd ${project.name} && echo \$PWD"


  1. Запустите эту задачу:

```javascript


градул customSshTask


🌀 Доступные задачи Gradle из ssh плагина:


По умолчанию у вас есть предварительно настроенные задачи:


  • ssh – все параметры отключены по умолчанию (false)

  • scp – все параметры включены по умолчанию (true)

  • ssh-gradle — копировать gradle необходимые файлы на удаленный сервер в каждом подпроекте

  • ssh-docker — скопировать docker файлы на удаленный сервер.

  • ssh-jars - скопировать файл ${subproject}/build/libs/___.jar на удаленный сервер в каждом подпроекте

Пример задач, которые станут доступны для вашего проекта:


  • Задач будет столько же, сколько подпроектов Gradle.

  1. ssh-backend - скопировать backend дистрибутив *.jar-файл на удаленный сервер

  1. ssh-frontend — скопировать папку frontend на удаленный сервер.

  1. ssh-nginx - скопировать папку nginx на удаленный сервер

  1. ...

Имя сервиса для всех задач равно ${project.name}


📋 Пример структуры проекта


  • Может быть столько бэкэндов, сколько вам нужно.

```javascript


проект


|-[бэкенд]


| - [источник/главная/java/сборка/библиотеки]/*.jar


| - Докерфайл


| - Dockerfile.dev


| - docker-compose.yml


| - docker-compose.dev.yml


|-[бэкенд-2]


| - [src/main/koltin/build/libs]/*.jar


|-[бэкенд-3]


| - [источник/основной/скала/сборка/библиотеки]/*.jar


|-[интерфейс]


| - docker-compose.yml


|-[nginx]


|-[постгрес]


| - [резервные копии]


|-[эластичный]


|-[статические]


|-[уровень]


| - [обертка]


|- градиент


|- gradlew.bat


|- docker-compose.yml


Более подробное описание этого плагина и примеры будут в моих следующих статьях в ближайшее время.



Оригинал
PREVIOUS ARTICLE
NEXT ARTICLE