name: First responder docs-content # **What it does**: New pull requests automatically add to the content first responder board. # **Why we have it**: So we don't lose track of new pull reuqests for docs-content to review. # **Who does it impact**: Docs content. on: pull_request: types: - reopened - opened - ready_for_review - closed - unlabeled permissions: contents: none jobs: first-responder-triage-pr: name: Triage PR to FR project board if: github.repository == 'github/docs-internal' && github.event.pull_request.draft == false && github.event.action != 'unlabeled' && github.event.action != 'closed' && github.actor != 'dependabot[bot]' runs-on: ubuntu-latest steps: - name: Check if the event originated from a team member uses: actions/github-script@2b34a689ec86a68d8ab9478298f91d5401337b7d id: set-result with: github-token: ${{secrets.DOCUBOT_READORG_REPO_WORKFLOW_SCOPES}} result-encoding: string script: | const repoName = context.payload.repository.name const ownerName = context.payload.repository.owner.login const issueNumber = (context.eventName === "issues") ? context.payload.issue.number : context.payload.number const updatedIssueInformation = await github.issues.get({ owner: ownerName, repo: repoName, issue_number: issueNumber }) const teamMembers = await github.request( `/orgs/github/teams/docs/members?per_page=100` ) const logins = teamMembers.data.map(member => member.login) // ignore PRs opened by docs bot accounts logins.push('Octomerger', 'octoglot', 'docubot') if (logins.some(login => login === updatedIssueInformation.data.user.login)) { console.log(`This issue or pull request was authored by a member of the github/docs team.`) return 'true' } console.log(`This issue or pull request was authored by an external contributor.`) return 'false' - name: Label external contributor pull requests with docs-content-fr uses: andymckay/labeler@e6c4322d0397f3240f0e7e30a33b5c5df2d39e90 if: steps.set-result.outputs.result == 'false' with: repo-token: '${{ secrets.DOCUBOT_READORG_REPO_WORKFLOW_SCOPES }}' add-labels: 'docs-content-fr' - name: Triage to FR PR project column uses: rachmari/actions-add-new-issue-to-column@1a459ef92308ba7c9c9dc2fcdd72f232495574a9 if: steps.set-result.outputs.result == 'false' with: action-token: ${{ secrets.DOCUBOT_READORG_REPO_WORKFLOW_SCOPES }} project-url: 'https://github.com/orgs/github/projects/1367' column-name: 'Docs-internal external contributor PRs' first-responder-remove-pr: name: Remove PR from FR project board if: github.repository == 'github/docs-internal' && ((github.event.label.name == 'docs-content-fr' && github.event.action == 'unlabeled') || github.event.action == 'closed') && github.actor != 'dependabot[bot]' runs-on: ubuntu-latest steps: - name: Remove card from project uses: actions/github-script@2b34a689ec86a68d8ab9478298f91d5401337b7d with: github-token: ${{secrets.DOCUBOT_READORG_REPO_WORKFLOW_SCOPES}} result-encoding: string script: | const issueToRemove = context.payload.number const cards = await github.projects.listCards({ column_id: 11130889 }) cards.data.forEach(card => { if (card.content_url) { const cardIssueNumber = parseInt(card.content_url.split('/').pop(), 10) if (cardIssueNumber === issueToRemove) { const cards = github.projects.deleteCard({ card_id: card.id }) } } }) - name: Remove docs-content-fr label if not already removed if: github.event.action == 'closed' uses: andymckay/labeler@e6c4322d0397f3240f0e7e30a33b5c5df2d39e90 with: repo-token: '${{ secrets.DOCUBOT_READORG_REPO_WORKFLOW_SCOPES }}' remove-labels: 'docs-content-fr'