В начале была секта. И в секте была анархия. И каждый делал проект и каждый настраивал сам всю инфаструктуру. И каждый деплоил в пятницу сам. И было так. Но однажды темный властелин Саурон создал

Один проект чтобы править всеми

Один, чтоб все объединить

Один проект, чтоб деплоить в понедельник

Один, чтоб легче было жить

Перевод на человеческий:

ebpm-deploy - программа, представляющая собой средство для безопасного, быстрого и удобного развертывания проектов на сервере/серверах. Она позволяет одной командой сформировать пакет из исходного кода, бинарника или репозитория и затем запушить его на сервер и установить его.

Документация

Чтобы начать работать с ebpm-deploy, нужно настроить ebpmd-server на своем сервере. Если он уже настроен, и у вас есть токен доступа, то вы можете двигаться уже дальше.

I. Настройка ebpm-deploy

Установите локальный пароль для зашифрованного хранения токенов:

ebpm-deploy setup-password

Добавте токен в ebpm-deploy следущей командой:

ebpm-deploy add-token <TOKEN>

II. Инициализация проекта

В папке с проектом введите эту команду:

ebpm-deploy init

Она инициализирует текущую директорию как пакет, добавив туда манифест сборки пакета. Если получится, то система автоматически определит тип проекта, язык и тд и постарается сконфигурировать файл самостоятельно. Во время инициализации вам будет предложенно, на какой сервер загружать проект.

III. Деплой на сервер

Чтобы задеплоить на сервер проект, достаточно просто вызвать эту команду:

ebpm-deploy push

После чего вам предложат ввести пароль и проект автоматически будет запущен на сервере.

IV. Манифест проекта

В идеале вам не должно понадобиться редактировать манифест и ebpm-deploy должен сам все настроить. Но тем не менее. Манифест представляет собой yaml файл:

version: 1.0.0
name: custom-hello-world
 
- general:
	- pack specify /target/release/hello
	- exclude .git
- linux:
	- cargo build --release
- windows:
	- cargo build --release --target=x86_64-pc-linux-gnu
 
run:
	- $RES/hello

Команды в пространстве general выполняются внезависимости от ос, на которой собирается пакет. Вот список команд:

  • pack
    • all - пакует все файлы в пакет
    • specify [пакеты] - пакует определенные файлы в пакет
    • exclude - позволяет исключить из пакета файлы
    • sh - вызывает shell команду

В секциях windows и linux вызываются нативные команды в зависимости от используемой ос при сборке пакета. Секции сборки могут повторятся и будут выполнятся согласно своему порядку. Например:

- general:
-  - pack all
- windows:
	- dir
	- echo hello
- linux:
	- ls
	- echo hello
- general:
	- exclude .git
- linux:
	- echo world
- windows:
	- echo world

В секции run находится команда запуска, которая вызывается при запуске проекта на сервере. В ней находятся обычные bash команды как и в секции linux