From 7a21119d1779d8082c47b221eb79bcdcf9a91e19 Mon Sep 17 00:00:00 2001 From: Marc Alexander Date: Sun, 15 Sep 2024 20:33:06 +0200 Subject: [PATCH] [ticket/17394] Check mergeability of 3.3.x PRs PHPBB-17394 --- .github/workflows/tests.yml | 51 +++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 893c4c4a28..9b55e69771 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -596,3 +596,54 @@ jobs: if: ${{ matrix.type == 'functional' }} run: | phpBB/vendor/bin/phpunit --configuration .github/phpunit-psql-windows-github.xml --verbose --stop-on-error --group functional + + merge-check: + if: github.event.pull_request.base.ref == '3.3.x' + runs-on: ubuntu-latest + steps: + - name: Checkout the repository + uses: actions/checkout@v3 + with: + fetch-depth: 0 # Ensure full history is fetched + + - name: Set up Git user + run: | + git config --global user.name "github-actions" + git config --global user.email "github-actions@github.com" + + - name: Fetch all branches + run: git fetch origin + + - name: Simulate merging PR into 3.3.x + id: simulate_merge + run: | + git checkout 3.3.x + git merge --no-ff ${{ github.event.pull_request.head.sha }} --no-commit --no-ff || exit 1 + + - name: Attempt to merge updated 3.3.x into master + id: merge_master + run: | + git checkout master + if git merge --no-ff origin/3.3.x --no-commit --no-ff; then + echo "::set-output name=mergeable::true" + else + echo "::set-output name=mergeable::false" + git merge --abort + fi + + - name: Post comment on PR + if: always() # Ensure this step always runs, regardless of merge result + uses: peter-evans/create-or-update-comment@v4 + with: + token: ${{ secrets.GITHUB_TOKEN }} + issue-number: ${{ github.event.pull_request.number }} + body: | + The attempt to merge branch `3.3.x` into `master` has completed after considering the changes in this PR. + + - Merge result: ${{ steps.merge_master.outputs.mergeable == 'true' && 'Success' || 'Conflict' }} + + If there is a conflict, a separate PR will be needed to merge `3.3.x` into `master`. + + - name: Mark job as succeeded + if: always() + run: echo "Merge check completed. Ignoring the result to avoid failed status."