40 lines
1.6 KiB
Bash
40 lines
1.6 KiB
Bash
#!/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"
|