Решение по TD-STYLE-ANALYZERS: LF — инструменты проекта (Python/Node) пишут LF, CRLF-.sh не работают на Linux CI (sh scripts/ci.sh), большинство файлов уже были LF. Добавлен .gitattributes (* text=auto eol=lf, бинарные исключения), .editorconfig переведён на lf, 1029 файлов конвертированы, git add --renormalize. Из индекса убраны закравшиеся archive/**/__pycache__/*.pyc.
46 lines
1.5 KiB
Bash
46 lines
1.5 KiB
Bash
#!/usr/bin/env sh
|
|
# ci.sh — полный прогон Дейла (BL-CI): сборка всех решений, тесты, скан уязвимых
|
|
# NuGet-зависимостей, сборка и линтер фронта. Для локального запуска и CI-пайплайна.
|
|
# sh scripts/ci.sh
|
|
# Секреты и внешние сервисы не требуются: тесты — юнит (InMemory/fakes), БД/сеть не нужны.
|
|
set -e
|
|
|
|
REPO_DIR=$(cd "$(dirname "$0")/.." && pwd)
|
|
|
|
echo "== CI: сборка =="
|
|
sh "$REPO_DIR/scripts/build.sh"
|
|
|
|
echo
|
|
echo "== CI: тесты =="
|
|
sh "$REPO_DIR/scripts/test.sh"
|
|
|
|
echo
|
|
echo "== CI: скан уязвимых NuGet-зависимостей =="
|
|
for SLN in \
|
|
src/core/Deal.sln \
|
|
src/telegram-service/Deal.Telegram.sln \
|
|
src/ai-service/Deal.Ai.sln \
|
|
src/ml-service/Deal.Ml.sln \
|
|
src/storage-service/Deal.Storage.sln; do
|
|
echo "-- $SLN"
|
|
OUTPUT=$(cd "$REPO_DIR" && dotnet list "$SLN" package --vulnerable --include-transitive 2>&1 || true)
|
|
if printf '%s' "$OUTPUT" | grep -qi "has the following vulnerable"; then
|
|
printf '%s\n' "$OUTPUT"
|
|
echo "ОШИБКА: уязвимые зависимости в $SLN"
|
|
exit 1
|
|
fi
|
|
done
|
|
|
|
echo
|
|
echo "== CI: сборка фронта =="
|
|
if command -v npm >/dev/null 2>&1; then
|
|
(cd "$REPO_DIR/src/frontend" && {
|
|
if [ -f package-lock.json ]; then npm ci; else npm install; fi
|
|
} && npm run build)
|
|
else
|
|
echo " пропуск: npm не установлен (сборка фронта не запущена)"
|
|
fi
|
|
|
|
echo
|
|
echo "== CI ОК =="
|