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
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:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user