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: - opened - transferred - reopened permissions: contents: none 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@98814c53be79b1d30f795b907e553d8679345975 env: TEAM_ENGINEERING_REPO: ${{ secrets.TEAM_ENGINEERING_REPO }} TEAM_CONTENT_REPO: ${{ secrets.TEAM_CONTENT_REPO }} with: github-token: ${{ secrets.DOCUBOT_READORG_REPO_WORKFLOW_SCOPES }} 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), })