99 lines
4.3 KiB
YAML
99 lines
4.3 KiB
YAML
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@98814c53be79b1d30f795b907e553d8679345975
|
|
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.rest.issues.get({
|
|
owner: ownerName,
|
|
repo: repoName,
|
|
issue_number: issueNumber
|
|
})
|
|
const teamMembers = await github.request(
|
|
`/orgs/github/teams/docs/members?per_page=100`
|
|
)
|
|
const teamLogins = teamMembers.data.map(member => member.login)
|
|
// ignore PRs opened by docs bot accounts
|
|
teamLogins.push('Octomerger', 'octoglot')
|
|
if (teamLogins.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@98814c53be79b1d30f795b907e553d8679345975
|
|
with:
|
|
github-token: ${{secrets.DOCUBOT_READORG_REPO_WORKFLOW_SCOPES}}
|
|
result-encoding: string
|
|
script: |
|
|
const issueToRemove = context.payload.number
|
|
const cards = await github.rest.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.rest.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'
|