forked from json-schema-org/website
-
Notifications
You must be signed in to change notification settings - Fork 0
100 lines (94 loc) · 3.82 KB
/
sync-project-roadmap.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
name : Sync Project Roadmap Data
on:
schedule: # Run sundat at 00:05 every week
- cron: '5 0 * * 0'
workflow_dispatch:
jobs:
sync-roadmap-data:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Get Token
uses: actions/create-github-app-token@v1
id: get_workflow_token
with:
app-id: ${{ vars.APP_ID }}
private-key: ${{ secrets.PRIVATE_KEY }}
# fetch project data and store it in a file
- name: Fetch project data
env:
GH_TOKEN: ${{ steps.get_workflow_token.outputs.token }} # GitHub App token stored in secrets
PROJECT_ID: ${{vars.ROADMAP_PROJECT_ID}} # Project ID
run: |
gh api graphql -f query='
query($PROJECT_ID : ID!) {
node(id: $PROJECT_ID) {
... on ProjectV2 {
items(first: 20) {
nodes {
id
fieldValues(first: 8) {
nodes {
... on ProjectV2ItemFieldTextValue {
text
field {
... on ProjectV2FieldCommon {
name
}
}
}
... on ProjectV2ItemFieldDateValue {
date
field {
... on ProjectV2FieldCommon {
name
}
}
}
... on ProjectV2ItemFieldSingleSelectValue {
name
field {
... on ProjectV2FieldCommon {
name
}
}
}
}
}
content {
... on DraftIssue {
title
body
}
... on Issue {
title
assignees(first: 10) {
nodes {
login
}
}
}
... on PullRequest {
title
assignees(first: 10) {
nodes {
login
}
}
}
}
}
}
}
}
}' -f PROJECT_ID=$PROJECT_ID | jq '.data.node.items.nodes' > project_data.json
# commit updated project data
- name: Commit changes
env:
GITHUB_APP_TOKEN: ${{ steps.get_workflow_token.outputs.token }}
run: |
git config user.name "the-json-schema-bot[bot]"
git config user.email "the-json-schema-bot[bot]@users.noreply.github.com"
git add project_data.json
git diff --quiet && git diff --staged --quiet || (git commit -m "chore(project_data): update project_data.json" && git push "https://x-access-token:${GITHUB_APP_TOKEN}@github.com/${GITHUB_REPOSITORY}.git" HEAD:${GITHUB_REF#refs/heads/})