fix(ci): мульти-коммит пуш ломал детект путей
quality / changes (push) Successful in 7s
quality / commitlint (push) Skipped
quality / docker-check (push) Skipped
quality / web (push) Successful in 1m5s
quality / api (push) Successful in 53s
CD / quality (push) Successful in 2m8s
CD / publish (push) Successful in 2m33s

checkout для push-событий был fetch-depth: 2, но github.event.before
при пуше пачки коммитов лежит глубже HEAD~1 — git diff падал с
'bad object'. Теперь fetch-depth: 0 + fallback на полный пайплайн,
если before-SHA недоступен (переписанная история).
This commit is contained in:
Denozordec
2026-09-23 16:57:38 +07:00
parent 8d8bddb454
commit 2e947b5a31
+10 -2
View File
@@ -46,7 +46,8 @@ jobs:
- if: ${{ inputs.is_pull_request == false }}
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
fetch-depth: 2
# github.event.before может быть глубже HEAD~1 при мульти-коммит пуше
fetch-depth: 0
- id: detect
name: Detect changed paths per module
env:
@@ -79,7 +80,14 @@ jobs:
after="${HEAD_SHA:-$(git rev-parse HEAD)}"
before="$BEFORE_SHA"
if [ -n "$before" ] && [ "$before" != "0000000000000000000000000000000000000000" ]; then
FILES="$(git diff --name-only "$before" "$after")"
# before может отсутствовать в локальном клоне (история переписана) —
# это не повод ронять пайплайн, прогоняем всё.
if ! FILES="$(git diff --name-only "$before" "$after" 2>/dev/null)"; then
set_all_flags_true
write_outputs
echo "before sha $before not available — full pipeline fallback"
exit 0
fi
elif git rev-parse --verify HEAD~1 >/dev/null 2>&1; then
FILES="$(git diff --name-only HEAD~1 HEAD)"
else