From 3f17620194e9c03494b121892f95cc58f8f896d2 Mon Sep 17 00:00:00 2001 From: Andres Rodriguez Date: Mon, 27 Feb 2023 12:58:28 -0500 Subject: [PATCH] Create project-board-assigner.yml --- .github/workflows/project-board-assigner.yml | 76 ++++++++++++++++++++ 1 file changed, 76 insertions(+) create mode 100644 .github/workflows/project-board-assigner.yml diff --git a/.github/workflows/project-board-assigner.yml b/.github/workflows/project-board-assigner.yml new file mode 100644 index 000000000..74d3aab88 --- /dev/null +++ b/.github/workflows/project-board-assigner.yml @@ -0,0 +1,76 @@ +name: Add issue to Ingest or Logstash project + +on: + issues: + types: + - labeled +env: + INGEST_PROJECT_ID: 'PVT_kwDOAGc3Zs4AEzn4' + LOGSTASH_PROJECT_ID: 'PVT_kwDOAGc3Zs4AMlnl' + + # GitHub labels for each team/area + LOGSTASH_LABEL: 'Team:Logstash' + DOCS_LABEL: 'Team:Docs' + + # ID values for the Area property + its options for Ingest Board + AREA_FIELD_ID: 'PVTSSF_lADOAGc3Zs4AEzn4zgEgZSo' + INGEST_DOCS_OPTION_ID: 'def2f8e6' + +jobs: + add_to_ingest_project: + runs-on: ubuntu-latest + steps: + - uses: octokit/graphql-action@v2.x + id: add_to_ingest_project + if: github.event.label.name == env.DOCS_LABEL + with: + query: | + # Variables have to be snake cased because of https://github.com/octokit/graphql-action/issues/164 + mutation AddToIngestProject($project_id: ID!, $content_id: ID!) { + addProjectV2ItemById(input: { projectId: $project_id, contentId: $content_id }) { + item { + id + } + } + } + project_id: ${{ env.INGEST_PROJECT_ID }} + content_id: ${{ github.event.issue.node_id }} + env: + GITHUB_TOKEN: ${{ secrets.PROJECT_TOKEN }} + - uses: octokit/graphql-action@v2.x + id: add_to_logstash_project + if: github.event.label.name == env.LOGSTASH_LABEL + with: + query: | + # Variables have to be snake cased because of https://github.com/octokit/graphql-action/issues/164 + mutation AddToLogstashProject($project_id: ID!, $content_id: ID!) { + addProjectV2ItemById(input: { projectId: $project_id, contentId: $content_id }) { + item { + id + } + } + } + project_id: ${{ env.LOGSTASH_PROJECT_ID }} + content_id: ${{ github.event.issue.node_id }} + env: + GITHUB_TOKEN: ${{ secrets.PROJECT_TOKEN }} + # `if` conditions can only be assigned as the "step" level, so there's no way to conditionally pass differing + # `areaId` values to our GraphQL mutation. Would be nice if there was support for dictionaries or something in + # GH actions to make this a lot more DRY + - uses: octokit/graphql-action@v2.x + id: set_data_processing_area + if: github.event.label.name == env.DOCS_LABEL + with: + query: | + mutation updateIngestArea($item_id: ID!, $project_id: ID!, $area_field_id: ID!, $area_id: String) { + updateProjectV2ItemFieldValue( + input: { itemId: $item_id, projectId: $project_id, fieldId: $area_field_id, value: { singleSelectOptionId: $area_id } }) { + clientMutationId + } + } + item_id: ${{ fromJSON(steps.add_to_project.outputs.data).addProjectV2ItemById.item.id }} + project_id: ${{ env.INGEST_PROJECT_ID }} + area_field_id: ${{ env.AREA_FIELD_ID }} + area_id: ${{ env.INGEST_DOCS_OPTION_ID }} + env: + GITHUB_TOKEN: ${{ secrets.PROJECT_TOKEN }}