Skip to content

Commit 58b0a40

Browse files
authored
chore: Update project-automation.yml (#3275)
1 parent 439d0fc commit 58b0a40

File tree

1 file changed

+68
-21
lines changed

1 file changed

+68
-21
lines changed
Lines changed: 68 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,51 +1,98 @@
1-
name: Project automation
1+
# This workflow is used to add new issues to GitHub GraphSDKs Project
22

3+
name: Add Issue or PR to project
34
on:
45
issues:
56
types:
67
- opened
8+
pull_request:
9+
types:
10+
- opened
11+
branches:
12+
- "main"
713

814
permissions:
915
issues: write
10-
repository-projects: read
11-
16+
repository-projects: write
17+
1218
jobs:
1319
track_issue:
20+
if: github.actor != 'dependabot[bot]' && github.event.pull_request.head.repo.fork == false
1421
runs-on: ubuntu-latest
15-
1622
steps:
23+
- name: Generate token
24+
id: generate_token
25+
uses: actions/create-github-app-token@v1
26+
with:
27+
app-id: ${{ secrets.GRAPHBOT_APP_ID }}
28+
private-key: ${{ secrets.GRAPHBOT_APP_PEM }}
29+
1730
- name: Get project data
1831
env:
19-
GITHUB_TOKEN: ${{ secrets.PROJECT_ACCESS_TOKEN }}
20-
PROJECT_ORGANIZATION: ${{ secrets.PROJECT_ORGANIZATION }}
21-
PROJECT_NUMBER: ${{ secrets.PROJECT_NUMBER }}
32+
GITHUB_TOKEN: ${{ steps.generate_token.outputs.token }}
33+
ORGANIZATION: microsoftgraph
34+
PROJECT_NUMBER: 55
2235
run: |
2336
gh api graphql -f query='
2437
query($org: String!, $number: Int!) {
2538
organization(login: $org){
26-
projectNext(number: $number) {
39+
projectV2(number: $number) {
2740
id
2841
fields(first:20) {
2942
nodes {
30-
id
31-
name
32-
settings
43+
... on ProjectV2SingleSelectField {
44+
id
45+
name
46+
options {
47+
id
48+
name
49+
}
50+
}
3351
}
3452
}
3553
}
3654
}
37-
}' -f org=$PROJECT_ORGANIZATION -F number=$PROJECT_NUMBER > project_data.json
55+
}' -f org=$ORGANIZATION -F number=$PROJECT_NUMBER > project_data.json
3856
39-
echo 'PROJECT_ID='$(jq '.data.organization.projectNext.id' project_data.json) >> $GITHUB_ENV
57+
echo 'PROJECT_ID='$(jq '.data.organization.projectV2.id' project_data.json) >> $GITHUB_ENV
58+
echo 'LANGUAGE_FIELD_ID='$(jq '.data.organization.projectV2.fields.nodes[] | select(.name== "Language") | .id' project_data.json) >> $GITHUB_ENV
59+
echo 'LANGUAGE_OPTION_ID='$(jq '.data.organization.projectV2.fields.nodes[] | select(.name== "Language") | .options[] | select(.name=="Microsoft Graph Toolkit") |.id' project_data.json) >> $GITHUB_ENV
4060
41-
- name: Add issue to project
61+
- name: Add Issue or PR to project
4262
env:
43-
GITHUB_TOKEN: ${{ secrets.PROJECT_ACCESS_TOKEN }}
44-
ISSUE_ID: ${{ github.event.issue.node_id }}
63+
GITHUB_TOKEN: ${{ steps.generate_token.outputs.token }}
64+
ISSUE_ID: ${{ github.event_name == 'issues' && github.event.issue.node_id || github.event.pull_request.node_id }}
65+
run: |
66+
item_id="$( gh api graphql -f query='
67+
mutation($project:ID!, $issue:ID!) {
68+
addProjectV2ItemById(input: {projectId: $project, contentId: $issue}) {
69+
item {
70+
id
71+
}
72+
}
73+
}' -f project=$PROJECT_ID -f issue=$ISSUE_ID --jq '.data.addProjectV2ItemById.item.id')"
74+
75+
echo 'ITEM_ID='$item_id >> $GITHUB_ENV
76+
77+
- name: Set Language
78+
env:
79+
GITHUB_TOKEN: ${{ steps.generate_token.outputs.token }}
4580
run: |
4681
gh api graphql -f query='
47-
mutation($project:ID!, $issue:ID!) {
48-
addProjectNextItem(input: {projectId: $project, contentId: $issue}) {
49-
projectNextItem { id }
50-
}
51-
}' -f project=$PROJECT_ID -f issue=$ISSUE_ID
82+
mutation (
83+
$project: ID!
84+
$item: ID!
85+
$language_field: ID!
86+
$language_value: String!
87+
) {
88+
set_status: updateProjectV2ItemFieldValue(input: {
89+
projectId: $project
90+
itemId: $item
91+
fieldId: $language_field
92+
value: {singleSelectOptionId: $language_value}
93+
}) {
94+
projectV2Item {
95+
id
96+
}
97+
}
98+
}' -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)