|  | 
|  | 1 | +# This workflow is used to add new issues to GitHub GraphSDKs Project | 
|  | 2 | + | 
|  | 3 | +name: Add Issue or PR to project | 
|  | 4 | +on: | 
|  | 5 | +  issues: | 
|  | 6 | +    types: | 
|  | 7 | +      - opened | 
|  | 8 | +  pull_request: | 
|  | 9 | +    types: | 
|  | 10 | +      - opened | 
|  | 11 | +    branches: | 
|  | 12 | +      - "dev" | 
|  | 13 | + | 
|  | 14 | +jobs: | 
|  | 15 | +  track_issue: | 
|  | 16 | +    if: github.actor != 'dependabot[bot]' && !github.event.pull_request.head.repo.fork | 
|  | 17 | +    runs-on: ubuntu-latest | 
|  | 18 | +    steps: | 
|  | 19 | +      - name: Generate token | 
|  | 20 | +        id: generate_token | 
|  | 21 | +        uses: tibdex/github-app-token@3beb63f4bd073e61482598c45c71c1019b59b73a | 
|  | 22 | +        with: | 
|  | 23 | +          app_id: ${{ secrets.GRAPHBOT_APP_ID }} | 
|  | 24 | +          private_key: ${{ secrets.GRAPHBOT_APP_PEM }} | 
|  | 25 | + | 
|  | 26 | +      - name: Get project data | 
|  | 27 | +        env: | 
|  | 28 | +          GITHUB_TOKEN: ${{ steps.generate_token.outputs.token }} | 
|  | 29 | +          ORGANIZATION: microsoftgraph | 
|  | 30 | +          PROJECT_NUMBER: 55 | 
|  | 31 | +        run: | | 
|  | 32 | +          gh api graphql -f query=' | 
|  | 33 | +            query($org: String!, $number: Int!) { | 
|  | 34 | +              organization(login: $org){ | 
|  | 35 | +                projectV2(number: $number) { | 
|  | 36 | +                  id | 
|  | 37 | +                  fields(first:20) { | 
|  | 38 | +                    nodes { | 
|  | 39 | +                      ... on ProjectV2SingleSelectField { | 
|  | 40 | +                        id | 
|  | 41 | +                        name | 
|  | 42 | +                        options { | 
|  | 43 | +                          id | 
|  | 44 | +                          name | 
|  | 45 | +                        } | 
|  | 46 | +                      } | 
|  | 47 | +                    } | 
|  | 48 | +                  } | 
|  | 49 | +                } | 
|  | 50 | +              } | 
|  | 51 | +            }' -f org=$ORGANIZATION -F number=$PROJECT_NUMBER > project_data.json | 
|  | 52 | +
 | 
|  | 53 | +          echo 'PROJECT_ID='$(jq '.data.organization.projectV2.id' project_data.json) >> $GITHUB_ENV | 
|  | 54 | +          echo 'LANGUAGE_FIELD_ID='$(jq '.data.organization.projectV2.fields.nodes[] | select(.name== "Language") | .id' project_data.json) >> $GITHUB_ENV | 
|  | 55 | +          echo 'LANGUAGE_OPTION_ID='$(jq '.data.organization.projectV2.fields.nodes[] | select(.name== "Language") | .options[] | select(.name=="PHP") |.id' project_data.json) >> $GITHUB_ENV | 
|  | 56 | +
 | 
|  | 57 | +      - name: Add Issue or PR to project | 
|  | 58 | +        env: | 
|  | 59 | +          GITHUB_TOKEN: ${{ steps.generate_token.outputs.token }} | 
|  | 60 | +          ISSUE_ID: ${{ github.event_name == 'issues' && github.event.issue.node_id || github.event.pull_request.node_id }} | 
|  | 61 | +        run: | | 
|  | 62 | +          item_id="$( gh api graphql -f query=' | 
|  | 63 | +            mutation($project:ID!, $issue:ID!) { | 
|  | 64 | +              addProjectV2ItemById(input: {projectId: $project, contentId: $issue}) { | 
|  | 65 | +                item { | 
|  | 66 | +                  id | 
|  | 67 | +                } | 
|  | 68 | +              } | 
|  | 69 | +            }' -f project=$PROJECT_ID -f issue=$ISSUE_ID --jq '.data.addProjectV2ItemById.item.id')" | 
|  | 70 | +
 | 
|  | 71 | +          echo 'ITEM_ID='$item_id >> $GITHUB_ENV | 
|  | 72 | +
 | 
|  | 73 | +      - name: Set Language | 
|  | 74 | +        env: | 
|  | 75 | +          GITHUB_TOKEN: ${{ steps.generate_token.outputs.token }} | 
|  | 76 | +        run: | | 
|  | 77 | +          gh api graphql -f query=' | 
|  | 78 | +            mutation ( | 
|  | 79 | +              $project: ID! | 
|  | 80 | +              $item: ID! | 
|  | 81 | +              $language_field: ID! | 
|  | 82 | +              $language_value: String! | 
|  | 83 | +            ) { | 
|  | 84 | +              set_status: updateProjectV2ItemFieldValue(input: { | 
|  | 85 | +                projectId: $project | 
|  | 86 | +                itemId: $item | 
|  | 87 | +                fieldId: $language_field | 
|  | 88 | +                value: {singleSelectOptionId: $language_value} | 
|  | 89 | +              }) { | 
|  | 90 | +                projectV2Item { | 
|  | 91 | +                  id | 
|  | 92 | +                  } | 
|  | 93 | +              } | 
|  | 94 | +            }' -f project=$PROJECT_ID -f item=$ITEM_ID -f language_field=$LANGUAGE_FIELD_ID -f language_value=${{ env.LANGUAGE_OPTION_ID }} --silent | 
0 commit comments