From f3c442f0eaeb89304121b7e65f8184e31cf25a3b Mon Sep 17 00:00:00 2001 From: Andy Lee Date: Tue, 24 Mar 2026 14:28:51 +0800 Subject: [PATCH] ci: update auto assign workflow Signed-off-by: Andy Lee --- .github/auto-assign-config.yaml | 1 - .github/workflows/auto-assign-reviewer.yaml | 17 ------ .../pr-management-auto-assign-action.yaml | 55 +++++++++++++++++++ .../workflows/pr-management-auto-assign.yaml | 25 +++++++++ 4 files changed, 80 insertions(+), 18 deletions(-) delete mode 100644 .github/workflows/auto-assign-reviewer.yaml create mode 100644 .github/workflows/pr-management-auto-assign-action.yaml create mode 100644 .github/workflows/pr-management-auto-assign.yaml diff --git a/.github/auto-assign-config.yaml b/.github/auto-assign-config.yaml index b4f7b33f..2b3e41de 100644 --- a/.github/auto-assign-config.yaml +++ b/.github/auto-assign-config.yaml @@ -1,6 +1,5 @@ addAssignees: author addReviewers: true -numberOfReviewers: 0 reviewers: - a110605 - houhoucoop \ No newline at end of file diff --git a/.github/workflows/auto-assign-reviewer.yaml b/.github/workflows/auto-assign-reviewer.yaml deleted file mode 100644 index d84147b9..00000000 --- a/.github/workflows/auto-assign-reviewer.yaml +++ /dev/null @@ -1,17 +0,0 @@ -name: "[PR Management] Auto Assign Reviewer & Assignee" - -on: - pull_request_target: - types: [opened, ready_for_review] - -permissions: - pull-requests: write - -jobs: - auto-assign: - if: github.event.pull_request.draft == false - runs-on: ubuntu-latest - steps: - - uses: rancher/gh-issue-mgr/auto-assign-action@main - with: - configuration-path: .github/auto-assign-config.yaml \ No newline at end of file diff --git a/.github/workflows/pr-management-auto-assign-action.yaml b/.github/workflows/pr-management-auto-assign-action.yaml new file mode 100644 index 00000000..9eb38e4f --- /dev/null +++ b/.github/workflows/pr-management-auto-assign-action.yaml @@ -0,0 +1,55 @@ +name: "PR Management Auto Assign" + +on: + workflow_run: + workflows: ["PR Management Auto Assign Collect Data"] + types: [completed] + +env: + REPO_NAME: harvester/harvester-ui-extension + +jobs: + auto-assign: + runs-on: ubuntu-latest + if: ${{ github.event.workflow_run.conclusion == 'success' }} + permissions: + actions: read + pull-requests: write + steps: + - name: Download PR data artifact + uses: actions/download-artifact@v4 + with: + name: pr-auto-assign-data + run-id: ${{ github.event.workflow_run.id }} + github-token: ${{ secrets.CUSTOM_GITHUB_TOKEN }} + + - name: Load PR data + run: | + cat pr-auto-assign-data.env >> $GITHUB_ENV + + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Auto assign based on config + env: + GH_TOKEN: ${{ secrets.CUSTOM_GITHUB_TOKEN }} + run: | + # Read config + ADD_ASSIGNEES=$(yq e '.addAssignees' .github/auto-assign-config.yaml) + ADD_REVIEWERS=$(yq e '.addReviewers' .github/auto-assign-config.yaml) + REVIEWERS=$(yq e '.reviewers[]' .github/auto-assign-config.yaml 2>/dev/null || true) + + # Assign author if addAssignees is 'author' + if [[ "$ADD_ASSIGNEES" == "author" ]]; then + echo "Assigning PR author: $PR_AUTHOR" + gh pr edit "$PR_NUMBER" --repo "${REPO_NAME}" --add-assignee "$PR_AUTHOR" + fi + + # Add reviewers if addReviewers is true and reviewers list is non-empty + if [[ "$ADD_REVIEWERS" == "true" && -n "$REVIEWERS" ]]; then + SELECTED=$(echo "$REVIEWERS" | xargs) + echo "Adding reviewers: $SELECTED" + for reviewer in $SELECTED; do + gh pr edit "$PR_NUMBER" --repo "${REPO_NAME}" --add-reviewer "$reviewer" + done + fi \ No newline at end of file diff --git a/.github/workflows/pr-management-auto-assign.yaml b/.github/workflows/pr-management-auto-assign.yaml new file mode 100644 index 00000000..88da9f54 --- /dev/null +++ b/.github/workflows/pr-management-auto-assign.yaml @@ -0,0 +1,25 @@ +name: "PR Management Auto Assign Collect Data" + +on: + pull_request: + types: [opened, ready_for_review] + +jobs: + collect: + runs-on: ubuntu-latest + permissions: + actions: write + pull-requests: read + steps: + - name: Save PR data to artifact + run: | + { + echo "PR_NUMBER=${{ github.event.pull_request.number }}" + echo "PR_AUTHOR=${{ github.event.pull_request.user.login }}" + } > pr-auto-assign-data.env + + - name: Upload PR data artifact + uses: actions/upload-artifact@v4 + with: + name: pr-auto-assign-data + path: pr-auto-assign-data.env \ No newline at end of file