label_external_issues.yml 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. name: Label issue from external users
  2. on:
  3. issues:
  4. types: [opened]
  5. jobs:
  6. label-external-issues:
  7. name: Label issue from external user
  8. runs-on: ubuntu-latest
  9. steps:
  10. - name: add external label
  11. uses: actions/github-script@v7
  12. with:
  13. github-token: ${{ secrets.GH_PERSONAL_ACCESS_TOKEN }}
  14. script: |
  15. const issueAuthor = context.payload.issue.user.login
  16. if (context.repo.owner == issueAuthor) {
  17. console.log("Issue author is here");
  18. return
  19. }
  20. const org = context.repo.owner;
  21. const isOrgMember = async function () {
  22. try {
  23. const response = await github.rest.orgs.checkMembershipForUser({
  24. org,
  25. username: issueAuthor,
  26. });
  27. return response.status == 204;
  28. } catch (error) {
  29. if (error.status && error.status == 404) {
  30. return false;
  31. }
  32. throw error;
  33. }
  34. }
  35. console.log(`Checking membership for user: ${issueAuthor} in organization: ${org}`);
  36. if (!await isOrgMember()) {
  37. console.log(`User ${issueAuthor} is not a member of the organization.`)
  38. github.rest.issues.addLabels({
  39. issue_number: context.issue.number,
  40. owner: context.repo.owner,
  41. repo: context.repo.repo,
  42. labels: ['external']
  43. })
  44. } else {
  45. console.log(`User ${issueAuthor} is a member of the organization.`)
  46. }