mirror of
https://github.com/lukaszraczylo/shared-actions.git
synced 2026-10-18 05:47:48 +00:00
fix(autoupdate): test the default branch and handle merge conflicts
The checkout used the triggering ref, so a run started from another branch tested a stale tree and then hit conflicts. Check out the default branch explicitly. When a passing PR conflicts, close it and skip, and when the merge fails, close the PR and fail the job. Only a real test failure goes to the issue.
This commit is contained in:
@@ -199,9 +199,15 @@ jobs:
|
|||||||
BRANCH: ${{ matrix.branch }}
|
BRANCH: ${{ matrix.branch }}
|
||||||
GH_TOKEN: ${{ github.token }}
|
GH_TOKEN: ${{ github.token }}
|
||||||
steps:
|
steps:
|
||||||
|
- name: Find the default branch
|
||||||
|
id: default
|
||||||
|
run: echo "branch=$(gh api "repos/$GITHUB_REPOSITORY" --jq .default_branch)" >> "$GITHUB_OUTPUT"
|
||||||
|
|
||||||
|
# Not the triggering ref: a push or a manual run from another branch must still test the default branch.
|
||||||
- name: Checkout the default branch
|
- name: Checkout the default branch
|
||||||
uses: actions/checkout@v6
|
uses: actions/checkout@v6
|
||||||
with:
|
with:
|
||||||
|
ref: ${{ steps.default.outputs.branch }}
|
||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
lfs: ${{ inputs.lfs }}
|
lfs: ${{ inputs.lfs }}
|
||||||
|
|
||||||
@@ -338,6 +344,10 @@ jobs:
|
|||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
|
- name: Mark the tests as passed
|
||||||
|
if: steps.merge.outputs.skip != 'true'
|
||||||
|
run: touch "$RUNNER_TEMP/tests-passed"
|
||||||
|
|
||||||
- name: Open the PR and merge it
|
- name: Open the PR and merge it
|
||||||
if: steps.merge.outputs.skip != 'true'
|
if: steps.merge.outputs.skip != 'true'
|
||||||
env:
|
env:
|
||||||
@@ -359,12 +369,22 @@ jobs:
|
|||||||
[ "$state" != UNKNOWN ] && break
|
[ "$state" != UNKNOWN ] && break
|
||||||
sleep 5
|
sleep 5
|
||||||
done
|
done
|
||||||
|
if [ "$state" = CONFLICTING ]; then
|
||||||
|
gh pr close "$pr" --repo "$GITHUB_REPOSITORY" \
|
||||||
|
--comment "The tests passed, but the branch conflicts with $default. Renovate rebases it on the next run."
|
||||||
|
echo "::warning::$BRANCH conflicts with $default, so PR #$pr was closed. Renovate rebases it on the next run."
|
||||||
|
echo "\`$BRANCH\` passed its tests but conflicts with \`$default\`. Renovate rebases it on the next run." >> "$GITHUB_STEP_SUMMARY"
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
# --match-head-commit refuses to merge anything newer than the commit that was tested.
|
# --match-head-commit refuses to merge anything newer than the commit that was tested.
|
||||||
gh pr merge "$pr" --repo "$GITHUB_REPOSITORY" --squash --delete-branch \
|
if ! gh pr merge "$pr" --repo "$GITHUB_REPOSITORY" --squash --delete-branch \
|
||||||
--match-head-commit "$HEAD_SHA" \
|
--match-head-commit "$HEAD_SHA" \
|
||||||
--subject "$SUBJECT" \
|
--subject "$SUBJECT" \
|
||||||
--body "Automated dependency update. All tests passed." \
|
--body "Automated dependency update. All tests passed." \
|
||||||
${ADMIN:+--admin}
|
${ADMIN:+--admin}; then
|
||||||
|
gh pr close "$pr" --repo "$GITHUB_REPOSITORY" --comment "The tests passed, but GitHub refused the merge. See the workflow run. The next run tries again."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
echo "Merged #$pr ($BRANCH)." >> "$GITHUB_STEP_SUMMARY"
|
echo "Merged #$pr ($BRANCH)." >> "$GITHUB_STEP_SUMMARY"
|
||||||
|
|
||||||
- name: Report the failure
|
- name: Report the failure
|
||||||
@@ -375,6 +395,10 @@ jobs:
|
|||||||
HEAD_SHA: ${{ steps.merge.outputs.head }}
|
HEAD_SHA: ${{ steps.merge.outputs.head }}
|
||||||
RUN_URL: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}
|
RUN_URL: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}
|
||||||
run: |
|
run: |
|
||||||
|
if [ -e "$RUNNER_TEMP/tests-passed" ]; then
|
||||||
|
echo "The tests passed for \`$BRANCH\`, but the merge failed. See the log above. The next run tries again." >> "$GITHUB_STEP_SUMMARY"
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
echo "The tests failed for \`$BRANCH\`, so no PR was opened. Renovate retries on the next run." >> "$GITHUB_STEP_SUMMARY"
|
echo "The tests failed for \`$BRANCH\`, so no PR was opened. Renovate retries on the next run." >> "$GITHUB_STEP_SUMMARY"
|
||||||
|
|
||||||
log="$RUNNER_TEMP/test-output.log"
|
log="$RUNNER_TEMP/test-output.log"
|
||||||
|
|||||||
Reference in New Issue
Block a user