name: Label issues on: issues: types: - reopened - opened jobs: label_issues: name: "Issue: add labels" if: ${{ github.event.action == 'opened' || github.event.action == 'reopened' }} runs-on: ubuntu-latest permissions: issues: write steps: - uses: actions/github-script@v8 with: github-token: ${{ secrets.GH_ACTIONS_PR_WRITE }} script: | // Get the issue body and title const body = context.payload.issue.body let title = context.payload.issue.title // Define the labels array let labels = [] // Check if the issue author is in the agentframework-developers team let isTeamMember = false try { const teamMembership = await github.rest.teams.getMembershipForUserInOrg({ org: context.repo.owner, team_slug: process.env.TEAM_NAME, username: context.payload.issue.user.login }) console.log("Team Membership Data:", teamMembership); isTeamMember = teamMembership.data.state === 'active' } catch (error) { // User is not in the team or team doesn't exist console.error("Error fetching team membership:", error); isTeamMember = false } // Only add triage label if the author is not in the team if (!isTeamMember) { labels.push("triage") } // Check if the body or the title contains the word 'python' (case-insensitive) if ((body != null && body.match(/python/i)) || (title != null && title.match(/python/i))) { // Add the 'python' label to the array labels.push("python") } // Check if the body or the title contains the words 'dotnet', '.net', 'c#' or 'csharp' (case-insensitive) if ((body != null && body.match(/.net/i)) || (title != null && title.match(/.net/i)) || (body != null && body.match(/dotnet/i)) || (title != null && title.match(/dotnet/i)) || (body != null && body.match(/C#/i)) || (title != null && title.match(/C#/i)) || (body != null && body.match(/csharp/i)) || (title != null && title.match(/csharp/i))) { // Add the '.NET' label to the array labels.push(".NET") } // Add the labels to the issue (only if there are labels to add) if (labels.length > 0) { github.rest.issues.addLabels({ issue_number: context.issue.number, owner: context.repo.owner, repo: context.repo.repo, labels: labels }); } env: TEAM_NAME: ${{ secrets.DEVELOPER_TEAM }}