diff --git a/.github/workflows/label-add-conflict.yml b/.github/workflows/label-add-conflict-all-pr.yml
similarity index 94%
rename from .github/workflows/label-add-conflict.yml
rename to .github/workflows/label-add-conflict-all-pr.yml
index 9cd02ca1e658..36d21ff5be72 100644
--- a/.github/workflows/label-add-conflict.yml
+++ b/.github/workflows/label-add-conflict-all-pr.yml
@@ -1,14 +1,10 @@
-name: Auto Add Label "stale" & Comment Conflicts
+name: Auto Add Label "stale" & Comment Conflicts for All PR
on:
push:
branches:
- develop
- '4.*'
- pull_request:
- branches:
- - develop
- - '4.*'
jobs:
auto-label-comment-conflict:
diff --git a/.github/workflows/label-add-remove-conflict-single-pr.yml b/.github/workflows/label-add-remove-conflict-single-pr.yml
new file mode 100644
index 000000000000..5d2631bb30e6
--- /dev/null
+++ b/.github/workflows/label-add-remove-conflict-single-pr.yml
@@ -0,0 +1,56 @@
+name: Auto Add/Remove "stale" label in single PR
+
+on:
+ pull_request:
+ branches:
+ - develop
+ - '4.*'
+
+jobs:
+ check-conflict:
+ runs-on: ubuntu-22.04
+ permissions:
+ contents: read
+ pull-requests: write
+
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v4
+
+ - name: Get PR Detail
+ id: PR-detail
+ run: echo "detail=$(gh pr view $PR_URL --json mergeable,url,labels)" >> $GITHUB_OUTPUT
+ env:
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ PR_URL: ${{ github.event.pull_request.html_url }}
+
+ - name: 'Remove label "stale"'
+ env:
+ PR_DETAIL: ${{ steps.PR-detail.outputs.detail }}
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ PR_URL: ${{ github.event.pull_request.html_url }}
+ run: |
+
+ # MERGEABLE with 'stale' label
+ if [ "$(echo $PR_DETAIL | jq -r '.mergeable')" == "MERGEABLE" ] && \
+ [ "$(echo $PR_DETAIL | jq -r '.labels[] | select(.name == "stale")')" != "" ]; then
+ # remove 'stale' label
+ gh pr edit $PR_URL --remove-label "stale"
+ fi
+
+ - name: 'Check for conflicts and add label/comment'
+ env:
+ PR_DETAIL: ${{ steps.PR-detail.outputs.detail }}
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ PR_URL: ${{ github.event.pull_request.html_url }}
+ AUTHOR: ${{ github.event.pull_request.user.login }}
+ run: |
+
+ # CONFLICTING with no "stale" label,
+ if [ "$(echo $PR_DETAIL | jq -r '.mergeable')" == "CONFLICTING" ] && \
+ [ "$(echo $PR_DETAIL | jq -r '.labels[] | select(.name == "stale")')" == "" ]; then
+ # add label
+ gh pr edit $PR_URL --add-label "stale"
+ # add comment
+ gh pr comment $PR_URL --body ":wave: Hi, @$AUTHOR!
We detected conflicts in your PR against the base branch :speak_no_evil:
You may want to sync :arrows_counterclockwise: your branch with upstream!
Ref: [Syncing Your Branch](https://github.com/codeigniter4/CodeIgniter4/blob/develop/contributing/workflow.md#pushing-your-branch)"
+ fi
diff --git a/.github/workflows/label-remove-conflict.yml b/.github/workflows/label-remove-conflict.yml
deleted file mode 100644
index 3d40b537ae59..000000000000
--- a/.github/workflows/label-remove-conflict.yml
+++ /dev/null
@@ -1,39 +0,0 @@
-name: Auto Remove "stale" label
-
-on:
- pull_request:
- branches:
- - develop
- - '4.*'
-
-jobs:
- check-conflict:
- runs-on: ubuntu-22.04
- permissions:
- contents: read
- pull-requests: write
-
- steps:
- - name: Checkout
- uses: actions/checkout@v4
-
- - name: Get PR Detail
- id: PR-detail
- run: echo "detail=$(gh pr view $PR_URL --json mergeable,url,labels,author)" >> $GITHUB_OUTPUT
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- PR_URL: ${{ github.event.pull_request.html_url }}
-
- - name: 'Remove label "stale"'
- env:
- PR_DETAIL: ${{ steps.PR-detail.outputs.detail }}
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- PR_URL: ${{ github.event.pull_request.html_url }}
- run: |
-
- # MERGEABLE with 'stale' label
- if [ "$(echo $PR_DETAIL | jq -r '.mergeable')" == "MERGEABLE" ] && \
- [ "$(echo $PR_DETAIL | jq -r '.labels[] | select(.name == "stale")')" != "" ]; then
- # remove 'stale' label
- gh pr edit $PR_URL --remove-label "stale"
- fi