11name : add-assignee-and-reviewers
2+
23on :
34 pull_request_target :
4- types : [ready_for_review, opened, reopened]
5+ types : [ready_for_review, opened, reopened, review_requested, edited ]
56
67permissions :
7- contents : none
8+ contents : read
89 issues : write
9- pull-requests : write
10+ pull-requests : read
1011
1112jobs :
1213 add-assignee-and-reviewers :
1314 runs-on : ubuntu-latest
1415 if : ${{ github.event.pull_request.user.type != 'Bot' }}
1516 steps :
16- - name : Request reviewers
17+ - name : Set up GitHub CLI
18+ uses : cli/cli-action@v2
19+ with :
20+ version : latest
21+
22+ - name : Authenticate GitHub CLI
23+ env :
24+ GH_TOKEN : ${{ secrets.AST_CLI_GH_TOKEN }}
25+ run : gh auth status
26+
27+ - name : Fetch team members
28+ id : team
29+ env :
30+ GH_TOKEN : ${{ secrets.AST_CLI_GH_TOKEN }}
31+ run : |
32+ gh api orgs/CheckmarxDev/teams/ast-sypher-team/members --jq '.[].login' > team_members.txt
33+ echo "✅ Team members:"
34+ cat team_members.txt
35+
36+ - name : Fetch current reviewers
37+ id : reviewers
1738 env :
18- GH_REPO : ${{ github.repository }}
1939 GH_TOKEN : ${{ secrets.AST_CLI_GH_TOKEN }}
20- PRNUM : ${{ github.event.pull_request.number }}
21- PRAUTHOR : ${{ github.event.pull_request.user.login }}
22- run : gh pr edit $PRNUM --add-reviewer CheckmarxDev/ast-sypher-team
40+ run : |
41+ gh pr view ${{ github.event.pull_request.number }} --json reviewRequests --jq '.reviewRequests' > all_reviewers.json
42+
43+ jq -r '.[] | select(.type == "User") | .login' all_reviewers.json > user_reviewers.txt
44+ jq -r '.[] | select(.type == "Team") | .login' all_reviewers.json > team_reviewers.txt
45+
46+ echo "👤 User reviewers:"
47+ cat user_reviewers.txt || echo "None"
48+
49+ echo "👥 Team reviewers:"
50+ cat team_reviewers.txt || echo "None"
51+
52+ - name : Validate reviewers are only from ast-sypher-team
53+ run : |
54+ INVALID_USERS=()
55+ while read reviewer; do
56+ if ! grep -qx "$reviewer" team_members.txt; then
57+ INVALID_USERS+=("$reviewer")
58+ fi
59+ done < user_reviewers.txt || true
60+
61+ INVALID_TEAMS=()
62+ while read team; do
63+ if [ "$team" != "ast-sypher-team" ]; then
64+ INVALID_TEAMS+=("$team")
65+ fi
66+ done < team_reviewers.txt || true
67+
68+ if [ ${#INVALID_USERS[@]} -gt 0 ] || [ ${#INVALID_TEAMS[@]} -gt 0 ]; then
69+ echo "❌ Invalid reviewers detected!"
70+ echo "Invalid users: ${INVALID_USERS[*]}"
71+ echo "Invalid teams: ${INVALID_TEAMS[*]}"
72+ exit 1
73+ fi
74+
75+ echo "✅ All reviewers are valid members of the ast-sypher-team or the team itself."
0 commit comments