From 3729aca71ef0010c2d6fa92ac468ed2f5b6372b9 Mon Sep 17 00:00:00 2001 From: Rachael Sewell Date: Wed, 14 Oct 2020 14:06:16 -0700 Subject: [PATCH] add workflow to triage PRs opened by Hubber external contributors (#16018) Co-authored-by: Zeke Sikelianos --- .../first-responder-docs-content.yml | 79 +++++++++++++++++++ 1 file changed, 79 insertions(+) create mode 100644 .github/workflows/first-responder-docs-content.yml diff --git a/.github/workflows/first-responder-docs-content.yml b/.github/workflows/first-responder-docs-content.yml new file mode 100644 index 0000000000..ac1d0d7db6 --- /dev/null +++ b/.github/workflows/first-responder-docs-content.yml @@ -0,0 +1,79 @@ +name: First responder docs-content +on: + pull_request: + types: [reopened, opened, ready_for_review, unlabeled] + +jobs: + first-responder-triage: + if: github.repository == 'github/docs-internal' && github.event.pull_request.draft == false && github.event.action != 'unlabeled' + runs-on: ubuntu-latest + + steps: + - name: Check if the event originated from a team member + uses: actions/github-script@v2.0.0 + id: set-result + with: + github-token: ${{secrets.DOCUBOT_FR_PROJECT_BOARD_WORKFLOWS_REPO_ORG_READ_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` + ) + const logins = teamMembers.data.map(member => member.login) + 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: rachmari/labeler@v1.0.4 + if: steps.set-result.outputs.result == 'false' + with: + repo-token: "${{ secrets.DOCUBOT_FR_PROJECT_BOARD_WORKFLOWS_REPO_ORG_READ_SCOPES }}" + add-labels: "docs-content-fr" + - name: Triage to FR PR project column + uses: rachmari/actions-add-new-issue-to-column@v1.1.1 + if: steps.set-result.outputs.result == 'false' + with: + action-token: ${{ secrets.DOCUBOT_FR_PROJECT_BOARD_WORKFLOWS_REPO_ORG_READ_SCOPES }} + project-url: "https://github.com/orgs/github/projects/1367" + column-name: "Docs-internal external contributor PRs" + + first-responder-label-removed: + if: github.event.label.name == 'docs-content-fr' && github.event.action == 'unlabeled' + runs-on: ubuntu-latest + + steps: + - name: Dump GitHub context + env: + GITHUB_CONTEXT: ${{ toJson(github) }} + run: echo "$GITHUB_CONTEXT" + - name: Remove card from project + uses: actions/github-script@v2.0.0 + with: + github-token: ${{secrets.DOCUBOT_FR_PROJECT_BOARD_WORKFLOWS_REPO_ORG_READ_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 + }) + } + } + })