diff --git a/.github/workflows/label-add-conflict.yml b/.github/workflows/label-add-conflict.yml
deleted file mode 100644
index 43c291b4e889..000000000000
--- a/.github/workflows/label-add-conflict.yml
+++ /dev/null
@@ -1,53 +0,0 @@
-name: Auto Add Label "stale" & Comment Conflicts
-
-on:
- push:
- branches:
- - develop
- - '4.*'
- pull_request:
- branches:
- - develop
- - '4.*'
-
-jobs:
- auto-label-comment-conflict:
-
- permissions:
- contents: read
- pull-requests: write
-
- runs-on: ubuntu-22.04
- steps:
- - name: Checkout
- uses: actions/checkout@v4
-
- - name: Get PR List
- id: PR-list
- run: echo "pr_list=$(gh pr list -L 100 --json mergeable,url,labels,author)" >> $GITHUB_OUTPUT
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
-
- - name: 'Add label "stale" and comment'
- env:
- PR_LIST: ${{ steps.PR-list.outputs.pr_list }}
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- run: |
-
- IFS=$'\n' # Set Internal Field Separator to newline to handle array elements
-
- # Iterate through the PRs in PR_LIST
- for pr in $(echo "$PR_LIST" | jq -c '.[]'); do
- mergeable=$(echo "$pr" | jq -r '.mergeable')
- author=$(echo "$pr" | jq -r '.author.login')
- labels=$(echo "$pr" | jq -c '.labels[].name' | tr -d '[]"')
- url=$(echo "$pr" | jq -r '.url')
-
- if [ "$mergeable" != "MERGEABLE" ] && [[ ! "$labels" == *"stale"* ]]; then
- # Add "stale" label
- gh pr edit $url --add-label "stale"
-
- # Add a comment
- gh pr comment $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
- done
diff --git a/.github/workflows/label-conflict.yml b/.github/workflows/label-conflict.yml
new file mode 100644
index 000000000000..363cb967d274
--- /dev/null
+++ b/.github/workflows/label-conflict.yml
@@ -0,0 +1,33 @@
+name: Auto Comment Conflicts
+on:
+ pull_request:
+ branches:
+ - 'develop'
+ - '4.*'
+ types:
+ - labeled
+
+concurrency:
+ group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
+ cancel-in-progress: true
+
+jobs:
+ auto-comment-conflict:
+ permissions:
+ contents: read
+ pull-requests: write
+ if: github.event.label.name == 'stale'
+ runs-on: ubuntu-latest
+ steps:
+ - name: Add comment for PR with conflict
+ uses: peter-evans/create-or-update-comment@v3
+ with:
+ token: ${{ secrets.GITHUB_TOKEN }}
+ issue-number: ${{ github.event.pull_request.number }}
+ body: |
+ :wave: Hi, @${{ github.event.pull_request.user.login }}!
+
+ 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: https://github.com/codeigniter4/CodeIgniter4/blob/develop/contributing/workflow.md#pushing-your-branch
diff --git a/.github/workflows/label-remove-conflict.yml b/.github/workflows/label-remove-conflict.yml
deleted file mode 100644
index d1b6c665322d..000000000000
--- a/.github/workflows/label-remove-conflict.yml
+++ /dev/null
@@ -1,36 +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: |
- if [ "$(echo $PR_DETAIL | jq -r '.mergeable')" == "MERGEABLE" ] && \
- [ "$(echo $PR_DETAIL | jq -r '.labels[] | select(.name == "stale")')" != "" ]; then
- gh pr edit $PR_URL --remove-label "stale"
- fi