From 7f6dd21399aa788695b117398313b69b1490dc73 Mon Sep 17 00:00:00 2001 From: totoprayogo1916 Date: Thu, 21 Sep 2023 10:25:22 +0700 Subject: [PATCH 1/2] Separate workflow --- ...lict.yml => label-add-conflict-all-pr.yml} | 6 +- .../label-add-remove-conflict-single-pr.yml | 56 +++++++++++++++++++ .github/workflows/label-remove-conflict.yml | 39 ------------- 3 files changed, 57 insertions(+), 44 deletions(-) rename .github/workflows/{label-add-conflict.yml => label-add-conflict-all-pr.yml} (94%) create mode 100644 .github/workflows/label-add-remove-conflict-single-pr.yml delete mode 100644 .github/workflows/label-remove-conflict.yml 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 From 58acfec09a8f1c039ee55a3fdeb8b18e9bf7a06c Mon Sep 17 00:00:00 2001 From: Toto Date: Thu, 21 Sep 2023 12:06:09 +0700 Subject: [PATCH 2/2] Apply suggestions from code review by @kenjis Co-authored-by: kenjis --- .github/workflows/label-add-conflict-all-pr.yml | 5 +++-- .github/workflows/label-add-remove-conflict-single-pr.yml | 5 +++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/.github/workflows/label-add-conflict-all-pr.yml b/.github/workflows/label-add-conflict-all-pr.yml index 36d21ff5be72..5147d678f86c 100644 --- a/.github/workflows/label-add-conflict-all-pr.yml +++ b/.github/workflows/label-add-conflict-all-pr.yml @@ -1,4 +1,4 @@ -name: Auto Add Label "stale" & Comment Conflicts for All PR +name: Auto Label "stale" for All PRs on: push: @@ -7,7 +7,8 @@ on: - '4.*' jobs: - auto-label-comment-conflict: + build: + name: Check Conflicts permissions: contents: read diff --git a/.github/workflows/label-add-remove-conflict-single-pr.yml b/.github/workflows/label-add-remove-conflict-single-pr.yml index 5d2631bb30e6..8565c8975cca 100644 --- a/.github/workflows/label-add-remove-conflict-single-pr.yml +++ b/.github/workflows/label-add-remove-conflict-single-pr.yml @@ -1,4 +1,4 @@ -name: Auto Add/Remove "stale" label in single PR +name: Auto Label "stale" on: pull_request: @@ -7,7 +7,8 @@ on: - '4.*' jobs: - check-conflict: + build: + name: Check Conflicts runs-on: ubuntu-22.04 permissions: contents: read