Scope documentation CI and isolate delivery job resources
This commit is contained in:
@@ -20,13 +20,26 @@ jobs:
|
|||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Select relevant delivery work
|
||||||
|
id: delivery
|
||||||
|
env:
|
||||||
|
DELIVERY_EVENT: ${{ github.event_name }}
|
||||||
|
DELIVERY_REF: ${{ github.ref }}
|
||||||
|
DELIVERY_SHA: ${{ github.sha }}
|
||||||
|
DELIVERY_BASE: ${{ github.event.pull_request.base.sha || github.event.before }}
|
||||||
|
run: |
|
||||||
|
cd .
|
||||||
|
bash scripts/ci-select.sh
|
||||||
- name: Set up QEMU
|
- name: Set up QEMU
|
||||||
|
if: ${{ steps.delivery.outputs.run == 'true' }}
|
||||||
uses: docker/setup-qemu-action@v3
|
uses: docker/setup-qemu-action@v3
|
||||||
|
|
||||||
- name: Set up Docker Buildx
|
- name: Set up Docker Buildx
|
||||||
|
if: ${{ steps.delivery.outputs.run == 'true' }}
|
||||||
uses: docker/setup-buildx-action@v3
|
uses: docker/setup-buildx-action@v3
|
||||||
|
|
||||||
- name: Log in to Gitea registry
|
- name: Log in to Gitea registry
|
||||||
|
if: ${{ steps.delivery.outputs.run == 'true' }}
|
||||||
uses: docker/login-action@v3
|
uses: docker/login-action@v3
|
||||||
with:
|
with:
|
||||||
registry: ${{ env.REGISTRY }}
|
registry: ${{ env.REGISTRY }}
|
||||||
@@ -34,6 +47,7 @@ jobs:
|
|||||||
password: ${{ secrets.REGISTRY_PASSWORD }}
|
password: ${{ secrets.REGISTRY_PASSWORD }}
|
||||||
|
|
||||||
- name: Prepare image tags
|
- name: Prepare image tags
|
||||||
|
if: ${{ steps.delivery.outputs.run == 'true' }}
|
||||||
id: prep
|
id: prep
|
||||||
shell: bash
|
shell: bash
|
||||||
run: |
|
run: |
|
||||||
@@ -56,6 +70,7 @@ jobs:
|
|||||||
} >> "$GITHUB_OUTPUT"
|
} >> "$GITHUB_OUTPUT"
|
||||||
|
|
||||||
- name: Build and push image
|
- name: Build and push image
|
||||||
|
if: ${{ steps.delivery.outputs.run == 'true' }}
|
||||||
uses: docker/build-push-action@v6
|
uses: docker/build-push-action@v6
|
||||||
with:
|
with:
|
||||||
context: .
|
context: .
|
||||||
|
|||||||
@@ -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