55 lines
2.1 KiB
Bash
55 lines
2.1 KiB
Bash
#!/bin/sh
|
|
|
|
# Путь до файла с версиями модулей
|
|
FILE_PATH="services-versions.json"
|
|
|
|
# Предпоследний релизный тег
|
|
PREVIOUS_TAG=$(git tag --sort=taggerdate | tail -n 2 | head -n 1)
|
|
|
|
# Последний релизный тег
|
|
LAST_TAG=$(git tag --sort=taggerdate | tail -n 1)
|
|
|
|
# Изменения файла services-versions.json между 2 релизными тегами
|
|
DIFF_RESULT=$(git diff "$PREVIOUS_TAG":"$FILE_PATH" "$LAST_TAG":"$FILE_PATH")
|
|
|
|
# Поиск совпадений по регулярному выражению
|
|
matches=$(echo "$DIFF_RESULT" | grep -o '"msb-[^ ]*')
|
|
|
|
# Конвертация в массив и удаления лишних символов
|
|
array=($(echo "$matches" | tr -d ',\"'))
|
|
|
|
# Проверяем пустой ли массив, если да то собираем все модули, если нет то собираем только изменные модули
|
|
if [ ${#array[@]} -eq 0 ]; then
|
|
echo "Сборка всех модулей"
|
|
npx lerna run build --scope=msb-* --stream --concurrency=2
|
|
|
|
# Проверка успешного завершения команды lerna run build
|
|
if [ $? -eq 0 ]; then
|
|
echo "Сборка измененых модулей прошла успешно"
|
|
else
|
|
echo "Ошибка при сборке измененых модулей"
|
|
exit 1
|
|
fi
|
|
else
|
|
# Начало команды сборки
|
|
command="lerna run build"
|
|
|
|
# Добавляем параметры --scope для каждого элемента массива
|
|
for package in "${array[@]}"; do
|
|
command+=" --scope=$package"
|
|
done
|
|
|
|
# Добавляем остальные параметры
|
|
command+=" --stream --concurrency=3"
|
|
|
|
# Вывод команды
|
|
npx $command
|
|
|
|
# Проверка успешного завершения команды lerna run build
|
|
if [ $? -eq 0 ]; then
|
|
echo "Сборка измененых модулей прошла успешно"
|
|
else
|
|
echo "Ошибка при сборке измененых модулей"
|
|
exit 1
|
|
fi
|
|
fi |