From f188a750dda0c2458592f9e7f7543c58acdfa2b5 Mon Sep 17 00:00:00 2001 From: totoprayogo1916 Date: Tue, 19 Sep 2023 08:13:12 +0700 Subject: [PATCH] update GA label --- .github/workflows/label-add-conflict.yml | 53 +++++++++++++++++++++ .github/workflows/label-conflict.yml | 33 ------------- .github/workflows/label-remove-conflict.yml | 36 ++++++++++++++ 3 files changed, 89 insertions(+), 33 deletions(-) create mode 100644 .github/workflows/label-add-conflict.yml delete mode 100644 .github/workflows/label-conflict.yml create mode 100644 .github/workflows/label-remove-conflict.yml diff --git a/.github/workflows/label-add-conflict.yml b/.github/workflows/label-add-conflict.yml new file mode 100644 index 000000000000..43c291b4e889 --- /dev/null +++ b/.github/workflows/label-add-conflict.yml @@ -0,0 +1,53 @@ +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 deleted file mode 100644 index 363cb967d274..000000000000 --- a/.github/workflows/label-conflict.yml +++ /dev/null @@ -1,33 +0,0 @@ -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 new file mode 100644 index 000000000000..d1b6c665322d --- /dev/null +++ b/.github/workflows/label-remove-conflict.yml @@ -0,0 +1,36 @@ +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