diff --git a/.github/workflows/label-for-external-users.yml b/.github/workflows/label-for-external-users.yml index 2f19a746e0..7cf5ee254c 100644 --- a/.github/workflows/label-for-external-users.yml +++ b/.github/workflows/label-for-external-users.yml @@ -15,15 +15,34 @@ env: LABEL: external jobs: + check-user: + runs-on: ubuntu-22.04 + + outputs: + is-member: ${{ steps.check-user.outputs.is-member }} + + steps: + - name: Check whether `${{ github.actor }}` is a member of `${{ github.repository_owner }}` + id: check-user + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: | + if gh api -H "Accept: application/vnd.github+json" -H "X-GitHub-Api-Version: 2022-11-28" "/orgs/${GITHUB_REPOSITORY_OWNER}/members/${GITHUB_ACTOR}"; then + is_member=true + else + is_member=false + fi + + echo "is-member=${is_member}" | tee -a ${GITHUB_OUTPUT} + add-label: - # This workflow uses `author_association` for PRs and issues to determine if the user is an external user. - # Possible values for `author_association`: https://docs.github.com/en/graphql/reference/enums#commentauthorassociation - if: ${{ !contains(fromJSON('["OWNER", "MEMBER", "COLLABORATOR"]'), github.event[github.event_name == 'pull_request' && 'pull_request' || 'issue'].author_association) }} + if: needs.check-user.outputs.is-member == 'false' + needs: [ check-user ] runs-on: ubuntu-22.04 permissions: - pull-requests: write - issues: write + pull-requests: write # for `gh pr edit` + issues: write # for `gh issue edit` steps: - name: Label new ${{ github.event_name }}