mirror of
https://github.com/paperclipai/paperclip.git
synced 2026-11-04 19:28:46 +01:00
Reconcile Claude platform qualification with current master
Co-Authored-By: Paperclip <noreply@paperclip.ing>
This commit is contained in:
commit
c7d1dfb5ee
437 files changed
+31183
-12051
No files matched your search
@@ -215,10 +215,14 @@ jobs:
|
||||
echo "runner=$aws_runner" >> "$GITHUB_OUTPUT"
|
||||
echo '::notice title=AWS CI routing::Using an ephemeral RunsOn Fleet runner'
|
||||
|
||||
- name: Select stacked PR CI scope
|
||||
- name: Select PR CI scope
|
||||
id: scope
|
||||
shell: bash
|
||||
env:
|
||||
GH_TOKEN: ${{ github.token }}
|
||||
EVENT_NAME: ${{ github.event_name }}
|
||||
EVENT_BASE_SHA: ${{ github.event.pull_request.base.sha }}
|
||||
EVENT_HEAD_SHA: ${{ github.event.pull_request.head.sha }}
|
||||
STACK_JSON: ${{ toJSON(github.event.pull_request.stack) }}
|
||||
PR_BASE_REF: ${{ github.event.pull_request.base.ref }}
|
||||
run: |
|
||||
@@ -226,17 +230,53 @@ jobs:
|
||||
|
||||
full_ci='true'
|
||||
reason='ordinary pull request'
|
||||
# True when the PR's own diff is everything it adds to the stack's
|
||||
# base branch: no stack, or the lowest unmerged PR in one. Above
|
||||
# that, the diff omits lower PRs' code that this run must still test.
|
||||
diff_covers_stack='true'
|
||||
|
||||
# Release notes PRs touch only releases/v*.md or releases/beta/v*.md,
|
||||
# which no build, test, or e2e lane reads. The diff is pinned to the
|
||||
# event's base and head SHAs, so a later push cannot change the
|
||||
# decision for this run. Any lookup failure keeps full CI.
|
||||
release_notes_only() {
|
||||
[[ "${EVENT_NAME:-}" == 'pull_request' ]] || return 1
|
||||
[[ "${EVENT_BASE_SHA:-}" =~ ^[0-9a-f]{40}$ ]] || return 1
|
||||
[[ "${EVENT_HEAD_SHA:-}" =~ ^[0-9a-f]{40}$ ]] || return 1
|
||||
|
||||
local comparison
|
||||
comparison="$(gh api \
|
||||
-H 'Accept: application/vnd.github+json' \
|
||||
-H 'X-GitHub-Api-Version: 2022-11-28' \
|
||||
"/repos/paperclipai/paperclip/compare/$EVENT_BASE_SHA...$EVENT_HEAD_SHA" 2>/dev/null)" \
|
||||
|| return 1
|
||||
|
||||
# The compare API lists at most 300 files, so a full page may be
|
||||
# truncated. Renames count both the old and the new path.
|
||||
jq -e '
|
||||
(.files | type == "array") and
|
||||
(.files | length > 0 and length < 300) and
|
||||
all(.files[];
|
||||
(.filename | type == "string") and
|
||||
([.filename, .previous_filename] | map(select(. != null)) |
|
||||
all(.[]; type == "string" and test("^releases/(beta/)?v[^/]+\\.md$"))))
|
||||
' <<< "$comparison" >/dev/null 2>&1
|
||||
}
|
||||
|
||||
if jq -e 'type == "object"' <<< "$STACK_JSON" >/dev/null 2>&1; then
|
||||
stack_position="$(jq -r '.position // empty' <<< "$STACK_JSON")"
|
||||
stack_size="$(jq -r '.size // empty' <<< "$STACK_JSON")"
|
||||
stack_base_ref="$(jq -r '.base.ref // empty' <<< "$STACK_JSON")"
|
||||
if [[ -z "$stack_base_ref" || "$stack_base_ref" != "$PR_BASE_REF" ]]; then
|
||||
diff_covers_stack='false'
|
||||
fi
|
||||
|
||||
if [[ ! "$stack_position" =~ ^[1-9][0-9]*$ ]] ||
|
||||
[[ ! "$stack_size" =~ ^[1-9][0-9]*$ ]] ||
|
||||
(( stack_position > stack_size )) ||
|
||||
[[ -z "$stack_base_ref" ]]; then
|
||||
reason='malformed stack metadata; defaulting to full CI'
|
||||
diff_covers_stack='false'
|
||||
elif (( stack_position == stack_size )); then
|
||||
reason='top pull request in stack'
|
||||
elif [[ "$stack_base_ref" == "$PR_BASE_REF" ]]; then
|
||||
@@ -247,6 +287,12 @@ jobs:
|
||||
fi
|
||||
fi
|
||||
|
||||
if [[ "$full_ci" == 'true' && "$diff_covers_stack" == 'true' ]] &&
|
||||
release_notes_only; then
|
||||
full_ci='false'
|
||||
reason='release notes only'
|
||||
fi
|
||||
|
||||
echo "full_ci=$full_ci" >> "$GITHUB_OUTPUT"
|
||||
echo "::notice title=Stacked PR CI scope::$reason; full_ci=$full_ci"
|
||||
echo "::notice title=PR CI scope::$reason; full_ci=$full_ci"
|
||||
|
||||
Reference in new issue
Block a user