From cda30b22eee55de7518184f68314cf107379eb04 Mon Sep 17 00:00:00 2001 From: Ruben Quesada Lopez Date: Fri, 31 Jul 2026 16:27:34 +0200 Subject: [PATCH] [CALCITE-5584] Publish website action only triggers for the last commit in the chain --- .../publish-non-release-website-updates.yml | 28 +++++++++++++++---- 1 file changed, 23 insertions(+), 5 deletions(-) diff --git a/.github/workflows/publish-non-release-website-updates.yml b/.github/workflows/publish-non-release-website-updates.yml index c72a64233ffd..da1659ec602c 100644 --- a/.github/workflows/publish-non-release-website-updates.yml +++ b/.github/workflows/publish-non-release-website-updates.yml @@ -35,15 +35,33 @@ jobs: with: fetch-depth: 0 ref: site - - name: Cherry pick the commit to site + - name: Cherry pick all commits in push to site + env: + COMMITS: ${{ toJson(github.event.commits) }} run: | git config user.email ${{ github.actor }}@users.noreply.github.com git config user.name ${{ github.actor }} - git cherry-pick --strategy=recursive -X theirs $GITHUB_SHA - if [ $? -neq 0 ]; then - git status | sed -n 's/deleted by us://p' | xargs git add - git cherry-pick --continue --no-edit + + # github.event.commits is capped at 20 entries. Warn loudly if we hit + # the cap so a silently-truncated push shows up in the step summary + # rather than as "site branch is quietly missing commits." + if [ "$(echo "$COMMITS" | jq 'length')" -ge 20 ]; then + echo "::warning::Push contains 20+ commits — github.event.commits may be truncated; some commits may not be cherry-picked." fi + + # Extract each commit SHA from the push payload and iterate chronologically + echo "$COMMITS" | jq -r '.[].id' | while read -r commit_sha; do + echo "----------------------------------------" + echo "Cherry-picking commit: $commit_sha" + echo "----------------------------------------" + + if ! git cherry-pick --strategy=recursive -X theirs "$commit_sha"; then + echo "Handling cherry-pick conflict..." + git status | sed -n 's/deleted by us://p' | xargs -r git add + git cherry-pick --continue --no-edit + fi + done + git push origin site publish-website: