Skip to content

Commit d7f8985

Browse files
authored
Update language and project on issues and PRs (#2776)
1 parent d018eb7 commit d7f8985

File tree

1 file changed

+94
-0
lines changed

1 file changed

+94
-0
lines changed
+94
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,94 @@
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 == false
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=="PowerShell") |.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

Comments
 (0)