quick-deploy.sh
Обзор
quick-deploy.sh — это скрипт для быстрого развертывания проекта Symbiotic, автоматизирующий создание и запуск локальной сетевой инфраструктуры с помощью Docker Compose. Основная задача скрипта — упростить процесс настройки тестовой сети с заданным числом операторов, коммитеров и агрегаторов, а также обеспечить удобный мониторинг и управление развернутой сетью.
Скрипт проверяет существование рабочей директории temp-network, при необходимости удаляет её или повторно запускает сеть, генерирует конфигурацию через внешний скрипт generate_network.sh, запускает сервисы и выводит полезные рекомендации по работе с сетью.
Подробное описание компонентов
Переменные
RED,GREEN,YELLOW,BLUE, NC — переменные для цветного вывода в терминале (ошибки, предупреждения, информация и заголовки).OPERATORS— число операторов сети (по умолчанию 4).COMMITERS— число коммитеров (по умолчанию 1).AGGREGATORS— число агрегаторов (по умолчанию 1).
Значения параметров можно передавать при запуске скрипта, иначе используются значения по умолчанию.
Функции
print_status()
Выводит информационное сообщение в зелёном цвете.
Параметры:
$1— текст сообщения.
Пример использования:
print_status "Запуск процесса..."
print_warning()
Выводит предупреждение в жёлтом цвете.
Параметры:
$1— текст предупреждения.
Пример:
print_warning "Папка temp-network уже существует"
print_error()
Выводит сообщение об ошибке красным цветом.
Параметры:
$1— текст ошибки.
Пример:
print_error "Не удалось сгенерировать сеть"
print_header()
Выводит заголовок с разделителями синим цветом.
Параметры:
$1— заголовок.
Пример:
print_header "Symbiotic Quick Deploy"
main()
Основная функция скрипта, выполняющая полный цикл развертывания сети:
Выводит заголовок и конфигурацию (число операторов, коммитеров, агрегаторов).
Проверяет наличие директории
temp-network:Если директория существует, предлагает удалить её или повторно запустить сеть.
Если выбран повторный запуск, выполняет
docker compose up -dи показывает статус.
Если директории нет, вызывает внешний скрипт
generate_network.shс параметрами для генерации конфигурации.Запускает сеть через
docker compose up -dв папкеtemp-network.Ожидает 10 секунд для запуска сервисов.
Выводит статус запущенных контейнеров.
Показывает рекомендации по управлению сетью и адреса основных сервисов (RPC и другие).
Предлагает пример команды для создания тестового задания с использованием
cast send.
Параметры функции:
Передаются параметры командной строки: количество операторов, коммитеров, агрегаторов.
Возвращаемые значения:
0— успешное завершение.1— ошибка при генерации сети.
Обработка параметров командной строки
Если передан параметр --help или -h, скрипт выведет справочную информацию по использованию с описанием аргументов и примером запуска, после чего завершится.
Важные детали реализации
Используется
set -e— скрипт прервётся при первой ошибке.Цветной вывод реализован с помощью ANSI escape последовательностей.
Для генерации конфигурации сети вызывается внешний скрипт
generate_network.sh, который должен создать директориюtemp-networkс необходимыми файлами Docker Compose.При повторном запуске сети без удаления предыдущей конфигурации скрипт предлагает выбор пользователю.
Порты сервисов задаются динамически, например, для каждого оператора рассчитываются порты для relay sidecar и sum node.
Предусмотрена задержка в 10 секунд для старта сервисов перед проверкой статуса.
Взаимодействие с другими частями системы
Взаимодействует с внешним скриптом
generate_network.shдля создания сетевой конфигурации.Использует Docker Compose для управления контейнерами, запуска и остановки сервисов.
Предполагает наличие команды
castдля отправки транзакций (пример создания тестового задания).Служит основным инструментом для локального быстрого развёртывания тестовой среды проекта Symbiotic.
Пример использования
# Запуск с конфигурацией по умолчанию (4 оператора, 1 коммитер, 1 агрегатор)
./quick-deploy.sh
# Запуск с 6 операторами, 2 коммитерами, 2 агрегаторами
./quick-deploy.sh 6 2 2
# Получить справку
./quick-deploy.sh --help
Визуальное представление структуры и потоков выполнения
flowchart TD
A[Запуск скрипта] -->|Параметры? --help|-H[Вывод справки и выход]
A -->|Иначе| B[main()]
B --> C{Папка temp-network существует?}
C -->|Да| D[Предложить удалить или использовать существующую]
D -->|Удалить| E[Удалить temp-network и продолжить]
D -->|Использовать| F[cd temp-network и docker compose up -d]
F --> G[Показать статус сети и завершить]
E --> H[Вызов generate_network.sh]
C -->|Нет| H
H --> I{Успех генерации?}
I -->|Нет| J[Вывести ошибку и завершить]
I -->|Да| K[cd temp-network и docker compose up -d]
K --> L[Ожидание 10 секунд]
L --> M[Показать статус сети]
M --> N[Вывести инструкции и адреса сервисов]
N --> O[Завершение]
style H fill:#aaf,stroke:#333,stroke-width:2px
style K fill:#afa,stroke:#333,stroke-width:2px
Итог
quick-deploy.sh — удобный и надёжный bash-скрипт для быстрого локального развертывания сетевой инфраструктуры проекта Symbiotic с возможностью гибкой настройки числа компонентов, контроля состояния и получения рекомендаций по работе с сетью. Скрипт значительно упрощает подготовку тестовой среды и взаимодействие с ней.