34 lines
2.3 KiB
Bash
Executable file
34 lines
2.3 KiB
Bash
Executable file
#!/bin/bash
|
|
echo "Параллельное выполнение скриптов и развёртывание вёб-сайтов на сервере codeberg."
|
|
# обработка репозитория вёб-сайта
|
|
function pages2 {
|
|
echo "Обработка: $1"
|
|
cd "./$1" || return
|
|
for ((time_ms = "$(date '+%s%3N')"; $(date '+%s%3N') - time_ms < 10000; )); do
|
|
# 1 Создание удалённого репозитория
|
|
./.repo_pages2.sh "remote" 2>/dev/null >.repo_pages2.log
|
|
# 2 Проверка корректности ответов от сервера при создании репозитория
|
|
case "$(tail -n+10 .repo_pages2.log | grep -cE '^HTTP/[1,2].{,2}? [4,5]')" in
|
|
0) remote=true && break ;; *) echo "Ошибка 400-500 при подключении к серверу: $1" ;;
|
|
esac
|
|
done
|
|
if [ "$remote" != true ]; then echo "Ожидание более 10 секунд: $1" && return; else
|
|
# 3 Создание локального репозитория и отправка данных на сервер
|
|
./.repo_pages2.sh "local" 2>/dev/null >>.repo_pages2.log
|
|
fi
|
|
for ((time_ms = "$(date '+%s%3N')"; $(date '+%s%3N') - time_ms < 10000; )); do
|
|
# 4 Проверка корректности получения данных на сервере
|
|
case "$(./.repo_pages2.sh "testing" 2>/dev/null | grep -cE '^HTTP/[1,2].{,2}? [4,5]')" in
|
|
0) testing=true && break ;; *) echo "Ожидание данных на сервере: $1" && sleep 1 ;;
|
|
esac
|
|
done
|
|
if [ "$testing" != true ]; then echo "Ожидание более 10 секунд: $1"; fi
|
|
}
|
|
export -f pages2
|
|
cd ../.. # выход из папки и из репозитория
|
|
time_ms="$(date '+%s%3N')"
|
|
# запуск параллельной обработки репозиториев всех вёб-сайтов
|
|
printf 'pages2 "pomodoro%s"\0' {1..6} | xargs -n1 -0 -P0 bash -c
|
|
# замер продолжительности выполнения в миллисекундах, пересчёт в минуты, секунды и миллисекунды
|
|
tms="$(($(date '+%s%3N') - time_ms))" && min="$((tms / 1000 / 60))" && sec="$((tms / 1000 % 60))"
|
|
ms="$((tms % 1000))" && printf 'Общее время выполнения: %02d:%02d.%03d мс.\n' "$min" "$sec" "$ms"
|