chore: separate logic and workflow into separate files in attempt to … #2
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Major Version Approval Logic | ||
|
Check failure on line 1 in .github/workflows/major-version-approval-logic.yaml
|
||
| on: | ||
| workflow_call: | ||
| inputs: | ||
| pr_number: | ||
| required: true | ||
| type: number | ||
| secrets: | ||
| token: | ||
| required: true | ||
| jobs: | ||
| major-version-approval-check: | ||
| name: Major Version Approval Check | ||
| runs-on: ubuntu-latest | ||
| steps: | ||
| - uses: actions/checkout@v5 | ||
| - name: Check for at least 2 approvals from yoshi-php members | ||
| env: | ||
| GH_TOKEN: ${{ secrets.token }} | ||
| PR_NUMBER: ${{ inputs.pr_number }} | ||
| REQUIRED_APPROVALS: 2 | ||
| run: | | ||
| set -e | ||
| echo "Fetching approvals for PR #$PR_NUMBER..." | ||
| # Get a unique, sorted list of all users who have approved. | ||
| approvals=$(gh pr view $PR_NUMBER --json reviews --jq '[.reviews[] | select(.state == "APPROVED") | .author.login] | unique | .[]' | sort -u) | ||
| if [ -z "$approvals" ]; then | ||
| echo "No approvals found on this PR." | ||
| approvals="" | ||
| fi | ||
| echo "Fetching yoshi-php team members..." | ||
| team_members=$(gh api --paginate orgs/googleapis/teams/yoshi-php/members --jq '.[].login') | ||
| if [ -z "$team_members" ]; then | ||
| echo "Error: Could not fetch any members for the yoshi-php team." | ||
| exit 1 | ||
| fi | ||
| # find and count the intersection of the two lists. | ||
| count=$(echo "$team_members" | sort -u | grep -F -x -f <(echo "$approvals") | wc -l) | ||
| echo "Found $count approval(s) from the yoshi-php team." | ||
| if [[ $count -lt $REQUIRED_APPROVALS ]]; then | ||
| echo "Error: Requires at least $REQUIRED_APPROVALS approvals from the yoshi-php team. Only $count found." | ||
| exit 1 | ||
| else | ||
| echo "Success: Approval requirement of $REQUIRED_APPROVALS met." | ||
| fi | ||