Scope documentation CI and isolate delivery job resources
This commit is contained in:
@@ -0,0 +1,39 @@
|
||||
#!/usr/bin/env bash
|
||||
# Keep required jobs alive; only skip reviewed non-runtime documentation paths.
|
||||
set -euo pipefail
|
||||
base="${DELIVERY_BASE:-}"
|
||||
head="$(git rev-parse HEAD)"
|
||||
run=true
|
||||
if [[ "${DELIVERY_REF:-}" != refs/tags/* && "$head" == "${DELIVERY_SHA:-}" && "${DELIVERY_EVENT:-}" =~ ^(push|pull_request)$ && "$base" =~ ^[0-9a-f]{40}$ && "$base" != 0000000000000000000000000000000000000000 ]]; then
|
||||
if ! git cat-file -e "$base^{commit}" 2>/dev/null; then
|
||||
if [[ -n "${DELIVERY_FETCH_TOKEN:-}" ]]; then
|
||||
git -c "http.extraHeader=Authorization: token ${DELIVERY_FETCH_TOKEN}" fetch --quiet --depth=1 origin "$base" >/dev/null 2>&1 || true
|
||||
else
|
||||
git fetch --quiet --depth=1 origin "$base" >/dev/null 2>&1 || true
|
||||
fi
|
||||
fi
|
||||
if git cat-file -e "$base^{commit}" 2>/dev/null; then
|
||||
paths="$(mktemp)"
|
||||
trap 'rm -f -- "$paths"' EXIT
|
||||
# Snapshot comparison is conservative when main advanced during a PR.
|
||||
# Both rename sides remain visible, including names containing newlines.
|
||||
if git diff --no-renames --name-only -z "$base" "$head" > "$paths"; then
|
||||
run=false
|
||||
while IFS= read -r -d '' path; do
|
||||
case "$path" in
|
||||
README.md|CHANGELOG.md|LICENSE|LICENSE.md) ;;
|
||||
*) run=true; break ;;
|
||||
esac
|
||||
done < "$paths"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
if [[ "$run" == false ]]; then
|
||||
echo 'Only reviewed non-runtime documentation changed; build and validation are not applicable.'
|
||||
else
|
||||
echo 'Runtime, unknown inputs, or unavailable event history: run required validation.'
|
||||
fi
|
||||
if [[ -n "${GITHUB_OUTPUT:-}" ]]; then
|
||||
echo "run=$run" >> "$GITHUB_OUTPUT"
|
||||
fi
|
||||
printf '%s\n' "$run"
|
||||
Reference in New Issue
Block a user