Merge pull request 'Scope delivery checks and isolate build jobs' (#1) from feat/delivery-streamlining-20260911 into main
build-image / docker (push) Successful in 18s
build-image / docker (push) Successful in 18s
This commit was merged in pull request #1.
This commit is contained in:
@@ -2,12 +2,33 @@ name: build-image
|
|||||||
|
|
||||||
on:
|
on:
|
||||||
push:
|
push:
|
||||||
branches: [main]
|
branches:
|
||||||
|
- main
|
||||||
|
pull_request:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
|
||||||
|
concurrency:
|
||||||
|
group: ${{ github.workflow }}-${{ github.event_name }}-${{ github.event.pull_request.number
|
||||||
|
|| github.run_id }}
|
||||||
|
cancel-in-progress: ${{ github.event_name == 'pull_request' }}
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
docker:
|
docker:
|
||||||
runs-on: ubuntu-latest
|
runs-on: butler-ci
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: https://github.com/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: Build image
|
- name: Build image
|
||||||
run: make docker-build IMAGE_TAG=${{ gitea.sha }}
|
if: ${{ steps.delivery.outputs.run == 'true' }}
|
||||||
|
run: |
|
||||||
|
make ci-fast IMAGE_TAG=${{ gitea.sha }}
|
||||||
|
|||||||
@@ -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