Самый простой способ развертывания с помощью 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 также позволяют пользователям безопасно выполнять сетевые службы в незащищенной сети, например отправлять текстовые команды на удаленный сервер или настраивать его службы.
Если у вас нет этого ключа, давайте создадим его - запустите эти команды на вашем локальном компьютере:
- ssh-keygen -m PEM -t rsa -b 2048
- чмод 400 \~/.ssh/id_rsa
- 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
🔮 Персонализация:
- Зарегистрируйте новую задачу в файле build.gradle.kts:
```javascript
зарегистрироваться("customSshTask", Ssh::class) {
хост = "мой-домен.com"
пользователь = "корень"
градиент = правда
интерфейс = ложь
докер = правда
нгинкс = правда
каталог = "дистрибутив"
run = "cd ${project.name} && echo \$PWD"
- Запустите эту задачу:
```javascript
градул customSshTask
🌀 Доступные задачи Gradle из ssh
плагина:
По умолчанию у вас есть предварительно настроенные задачи:
ssh
– все параметры отключены по умолчанию (false)
scp
– все параметры включены по умолчанию (true)
ssh-gradle
— копировать gradle необходимые файлы на удаленный сервер в каждом подпроекте
ssh-docker
— скопировать docker файлы на удаленный сервер.
ssh-jars
- скопировать файл ${subproject}/build/libs/___.jar на удаленный сервер в каждом подпроекте
Пример задач, которые станут доступны для вашего проекта:
- Задач будет столько же, сколько подпроектов Gradle.
ssh-backend
- скопировать backend дистрибутив*.jar
-файл на удаленный сервер
ssh-frontend
— скопировать папку frontend на удаленный сервер.
ssh-nginx
- скопировать папку nginx на удаленный сервер
- ...
Имя сервиса для всех задач равно ${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
Более подробное описание этого плагина и примеры будут в моих следующих статьях в ближайшее время.
Оригинал