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