Skip to content

build needs to be installed in advance #3593

build needs to be installed in advance

build needs to be installed in advance #3593

name: Move new issues to correct docs repo
# **What it does**: If anyone creates an issue in the docs-internal repo for the engineering team or the content team, move that issue and notify the author
# **Why we have it**: We don't want engineering or content issues in the docs-internal repo
# **Who does it impact**: GitHub staff.
on:
issues:
types:
# Note, if an issue is transferred from github/some-other-repo
# over to github/docs-internal, this will trigger both 'transferred'
# *and* 'opened' events. And 'opened' covers the most basic case
# of an issue being created here in this repo.
- opened
- reopened
permissions:
contents: read
jobs:
transfer_issue:
runs-on: ubuntu-latest
continue-on-error: true
if: github.repository == 'github/docs-internal'
steps:
- id: move_to_correct_repo
uses: actions/github-script@e69ef5462fd455e02edcaf4dd7708eda96b9eda0
env:
TEAM_ENGINEERING_REPO: ${{ secrets.TEAM_ENGINEERING_REPO }}
TEAM_CONTENT_REPO: ${{ secrets.TEAM_CONTENT_REPO }}
with:
github-token: ${{ secrets.DOCS_BOT_PAT_WORKFLOW_READORG }}
script: |
const issueNo = context.issue.number
const owner = 'github'
const originalRepo = 'docs-internal'
// See if the engineering label is present.
const engineeringLabel = context.payload.issue.labels.find(label => label.name === 'engineering')
// Transfer engineering issues to the engineering repo and everything else to the Docs Content repo
let correctRepo = process.env.TEAM_CONTENT_REPO
if (engineeringLabel) {
correctRepo = process.env.TEAM_ENGINEERING_REPO
}
const correctRepoObject = await github.rest.repos.get({
owner: owner,
repo: correctRepo
})
// Post a comment in the docs-internal issue
await github.rest.issues.createComment({
owner: owner,
repo: originalRepo,
issue_number: issueNo,
body: `👋 You opened this issue in '${context.repo.repo}'. Moving forward, we're asking that folks create new issues in the following repositories instead:\n- For issues with the docs site, please submit to the [${process.env.TEAM_ENGINEERING_REPO}](/${owner}/${process.env.TEAM_ENGINEERING_REPO}) repo.\n- For all new content issues, please submit to the [${process.env.TEAM_CONTENT_REPO}](/${owner}/${process.env.TEAM_CONTENT_REPO}) repo.\n\nWe will transfer this issue for you!`
})
// Transfer the issue to the correct repo
const issueNodeId = context.payload.issue.node_id
const correctRepositoryNodeId = correctRepoObject.data.node_id
console.log(`Issue GraphQL Node ID: ${issueNodeId}`)
console.log(`Repository GraphQL Node ID: ${correctRepositoryNodeId}`)
const mutation = `mutation ($id: ID!, $repositoryId: ID!) {
transferIssue(input: {
issueId: $id,
repositoryId: $repositoryId
}) {
issue {
url,
number
}
}
}`
const variables = {
id: issueNodeId,
repositoryId: correctRepositoryNodeId
}
const graph = await github.graphql(mutation, variables)
console.log('GraphQL mutation result:\n' + JSON.stringify(graph))
// Add the same labels to the new issue
const newIssueNumber = graph.transferIssue.issue.number
await github.rest.issues.addLabels({
owner: owner,
repo: correctRepo,
issue_number: newIssueNumber,
labels: context.payload.issue.labels.map(label => label.name),
})
- name: Check out repo
if: ${{ failure() }}
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
- uses: ./.github/actions/slack-alert
if: ${{ failure() }}
with:
slack_channel_id: ${{ secrets.DOCS_ALERTS_SLACK_CHANNEL_ID }}
slack_token: ${{ secrets.SLACK_DOCS_BOT_TOKEN }}