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 }}
|
- if: ${{ inputs.is_pull_request == false }}
|
||||||
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||||
with:
|
with:
|
||||||
fetch-depth: 2
|
# github.event.before может быть глубже HEAD~1 при мульти-коммит пуше
|
||||||
|
fetch-depth: 0
|
||||||
- id: detect
|
- id: detect
|
||||||
name: Detect changed paths per module
|
name: Detect changed paths per module
|
||||||
env:
|
env:
|
||||||
@@ -79,7 +80,14 @@ jobs:
|
|||||||
after="${HEAD_SHA:-$(git rev-parse HEAD)}"
|
after="${HEAD_SHA:-$(git rev-parse HEAD)}"
|
||||||
before="$BEFORE_SHA"
|
before="$BEFORE_SHA"
|
||||||
if [ -n "$before" ] && [ "$before" != "0000000000000000000000000000000000000000" ]; then
|
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
|
elif git rev-parse --verify HEAD~1 >/dev/null 2>&1; then
|
||||||
FILES="$(git diff --name-only HEAD~1 HEAD)"
|
FILES="$(git diff --name-only HEAD~1 HEAD)"
|
||||||
else
|
else
|
||||||
|
|||||||
Reference in New Issue
Block a user