Skip to content

chore: separate logic and workflow into separate files in attempt to … #2

chore: separate logic and workflow into separate files in attempt to …

chore: separate logic and workflow into separate files in attempt to … #2

name: Major Version Approval Logic

Check failure on line 1 in .github/workflows/major-version-approval-logic.yaml

View workflow run for this annotation

GitHub Actions / .github/workflows/major-version-approval-logic.yaml

Invalid workflow file

(Line: 10, Col: 9): Unexpected value 'token', (Line: 10, Col: 9): Required property is missing: type
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