1
0
Fork 0
pomodoro/bash_scripts/repo_orchestrate.sh

27 lines
2.3 KiB
Bash
Raw Normal View History

2023-12-17 08:06:45 +03:00
#!/bin/bash
echo "Параллельное выполнение скриптов и создание репозиториев для каталогов проектов."
2023-12-17 08:20:25 +03:00
## --
# Для всех репозиториев, на одном уровне с текущим, формируем скрипт в одну строчку и
# выполняем эти скрипты в параллельном режиме. Скрипт в одну строчку — это выполнение
# заранее подготовленных других скриптов для локальных и удалённых репозиториев.
# Формируем скрипты несколько раз с разными параметрами и параллельностью: создание
# удалённых репозиториев — 5 потоков, все остальные действия без ограничений.
# --
cd .. # выходим из папки в корень репозитория
currentTimeMillis=$(date '+%s%3N')
# удаление репозиториев на сервере
2023-12-17 08:06:45 +03:00
find .. -mindepth 1 -maxdepth 1 -type d -printf \
2023-12-17 08:20:25 +03:00
'cd %h/%f && ./.repo_remote.sh "delete" >.repo_remote.log\0' | xargs -L1 -0 -P0 bash -c
# создание репозиториев на сервере для каталогов с сайтами
find .. -mindepth 1 -maxdepth 1 -type d -regex ".*[1-6]" -printf \
'cd %h/%f && ./.repo_remote.sh "create" >>.repo_remote.log\0' | xargs -L1 -0 -P5 bash -c
# создание репозиториев на сервере для остальных каталогов
find .. -mindepth 1 -maxdepth 1 -type d -regex ".*[^1-6]" -printf \
'cd %h/%f && ./.repo_remote.sh "create" >>.repo_remote.log\0' | xargs -L1 -0 -P5 bash -c
# создание локальных репозиториев и отправка данных на сервер,
# параллельно изменение настроек удалённых репозиториев
find .. -mindepth 1 -maxdepth 1 -type d -printf \
'cd %h/%f && ./.repo_local.sh >.repo_local.log\0
cd %h/%f && ./.repo_remote.sh "options" >>.repo_remote.log\0' | xargs -L1 -0 -P0 bash -c
echo "Общее время выполнения: $(("$(date '+%s%3N')" - "$currentTimeMillis")) мс."