Skip to content

Commit

Permalink
chore!: get QA reviewers from a file
Browse files Browse the repository at this point in the history
  • Loading branch information
siddarthkay committed Oct 3, 2024
1 parent b56e69d commit 23a73a7
Show file tree
Hide file tree
Showing 2 changed files with 48 additions and 12 deletions.
42 changes: 30 additions & 12 deletions .github/workflows/breaking-change-review.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
name: PR Review Workflow for Breaking Changes
name: PR Review Workflow

on:
pull_request:
Expand All @@ -11,8 +11,12 @@ on:

jobs:
check_breaking_change:
name: Require QA review
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v2

- name: Check for breaking change label
id: check_label
uses: actions/github-script@v6
Expand All @@ -28,12 +32,29 @@ jobs:
console.log(`Has breaking change label: ${hasBreakingChange}`);
return hasBreakingChange;
- name: Set QA reviewers
- name: Load QA teams
if: steps.check_label.outputs.result == 'true'
id: load_qa_teams
run: |
echo 'qa_teams<<EOF' >> $GITHUB_OUTPUT
cat .github/qa-teams.yml >> $GITHUB_OUTPUT
echo 'EOF' >> $GITHUB_OUTPUT
- name: Set random QA reviewers
if: steps.check_label.outputs.result == 'true'
id: set_reviewers
run: |
echo "mobile_qa=churik,yevh-berdnyk,VolodLytvynenko,pavloburykh,mariia-skrypnyk,Horupa-Olena" >> $GITHUB_OUTPUT
echo "desktop_qa=anastasiyaig,virginiabalducci,glitchminer,antdanchenko" >> $GITHUB_OUTPUT
mobile_qa_required=$(echo '${{ steps.load_qa_teams.outputs.qa_teams }}' | yq eval '.mobile_qa.reviewers_required' -)
desktop_qa_required=$(echo '${{ steps.load_qa_teams.outputs.qa_teams }}' | yq eval '.desktop_qa.reviewers_required' -)
mobile_qa_members=$(echo '${{ steps.load_qa_teams.outputs.qa_teams }}' | yq eval '.mobile_qa.members[]' - | tr '\n' ' ')
desktop_qa_members=$(echo '${{ steps.load_qa_teams.outputs.qa_teams }}' | yq eval '.desktop_qa.members[]' - | tr '\n' ' ')
mobile_qa=$(echo $mobile_qa_members | tr ' ' '\n' | shuf -n $mobile_qa_required | tr '\n' ',' | sed 's/,$//')
desktop_qa=$(echo $desktop_qa_members | tr ' ' '\n' | shuf -n $desktop_qa_required | tr '\n' ',' | sed 's/,$//')
echo "mobile_qa=$mobile_qa" >> $GITHUB_OUTPUT
echo "desktop_qa=$desktop_qa" >> $GITHUB_OUTPUT
- name: Request QA reviews
if: steps.check_label.outputs.result == 'true'
Expand All @@ -45,6 +66,8 @@ jobs:
const desktopQA = '${{ steps.set_reviewers.outputs.desktop_qa }}'.split(',');
const reviewers = [...mobileQA, ...desktopQA];
console.log('Requesting reviews from:', reviewers);
await github.rest.pulls.requestReviewers({
owner: context.repo.owner,
repo: context.repo.repo,
Expand Down Expand Up @@ -94,13 +117,9 @@ jobs:
let message = 'This PR has the breaking change label and requires approval from both mobile-qa and desktop-qa teams before it can be merged.\n\n';
if (!mobileQAApproved && !desktopQAApproved) {
message += 'Both mobile-qa and desktop-qa teams have not approved this PR yet.';
} else if (!mobileQAApproved) {
message += 'The mobile-qa team has not approved this PR yet.';
} else if (!desktopQAApproved) {
message += 'The desktop-qa team has not approved this PR yet.';
}
message += `- ${mobileQAApproved ? '[ ]' : '[x]'} Mobile QA team review\n`
message += `- ${desktopQAApproved ? '[ ]' : '[x]'} Desktop QA team review`
await github.rest.checks.create({
owner: context.repo.owner,
Expand All @@ -121,7 +140,6 @@ jobs:
with:
github-token: ${{secrets.GITHUB_TOKEN}}
script: |
const { data: reviews } = await github.rest.pulls.listReviews({
owner: context.repo.owner,
repo: context.repo.repo,
Expand Down
18 changes: 18 additions & 0 deletions .github/workflows/qa-teams.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
# QA Teams Configuration
mobile_qa:
reviewers_required: 2
members:
- churik
- yevh-berdnyk
- VolodLytvynenko
- pavloburykh
- mariia-skrypnyk
- Horupa-Olena

desktop_qa:
reviewers_required: 2
members:
- anastasiyaig
- virginiabalducci
- glitchminer
- antdanchenko

0 comments on commit 23a73a7

Please sign in to comment.