Skip to content

Commit c7b73a2

Browse files
committed
ci: add action workflow for issue and pr to prj
1 parent c88c2b5 commit c7b73a2

File tree

2 files changed

+183
-0
lines changed

2 files changed

+183
-0
lines changed
Lines changed: 91 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,91 @@
1+
name: Add Issue to Project
2+
3+
on:
4+
issues:
5+
types:
6+
- opened
7+
8+
jobs:
9+
track_issue:
10+
runs-on: ubuntu-latest
11+
steps:
12+
- name: Get project data
13+
env:
14+
GITHUB_TOKEN: ${{ secrets.botGitHubToken }}
15+
ORGANIZATION: instill-ai
16+
PROJECT_NUMBER: 5 # Visual Datat Preparation (VDP) project
17+
run: |
18+
gh api graphql -f query='
19+
query($org: String!, $number: Int!) {
20+
organization(login: $org){
21+
projectNext(number: $number) {
22+
id
23+
fields(first:20) {
24+
nodes {
25+
id
26+
name
27+
settings
28+
}
29+
}
30+
}
31+
}
32+
}' -f org=$ORGANIZATION -F number=$PROJECT_NUMBER > project_data.json
33+
34+
echo 'PROJECT_ID='$(jq '.data.organization.projectNext.id' project_data.json) >> $GITHUB_ENV
35+
echo 'DATE_FIELD_ID='$(jq '.data.organization.projectNext.fields.nodes[] | select(.name== "Date posted") | .id' project_data.json) >> $GITHUB_ENV
36+
echo 'STATUS_FIELD_ID='$(jq '.data.organization.projectNext.fields.nodes[] | select(.name== "Status") | .id' project_data.json) >> $GITHUB_ENV
37+
echo 'TODO_OPTION_ID='$(jq '.data.organization.projectNext.fields.nodes[] | select(.name== "Status") |.settings | fromjson.options[] | select(.name=="Todo") |.id' project_data.json) >> $GITHUB_ENV
38+
39+
- name: Add Issue to project
40+
env:
41+
GITHUB_TOKEN: ${{ secrets.botGitHubToken }}
42+
ISSUE_ID: ${{ github.event.issue.node_id }}
43+
run: |
44+
item_id="$( gh api graphql -f query='
45+
mutation($project:ID!, $issue:ID!) {
46+
addProjectNextItem(input: {projectId: $project, contentId: $issue}) {
47+
projectNextItem {
48+
id
49+
}
50+
}
51+
}' -f project=$PROJECT_ID -f issue=$ISSUE_ID --jq '.data.addProjectNextItem.projectNextItem.id')"
52+
53+
echo 'ITEM_ID='$item_id >> $GITHUB_ENV
54+
55+
- name: Get date
56+
run: echo "DATE=$(date +"%Y-%m-%d")" >> $GITHUB_ENV
57+
58+
- name: Set fields
59+
env:
60+
GITHUB_TOKEN: ${{ secrets.botGitHubToken }}
61+
run: |
62+
gh api graphql -f query='
63+
mutation (
64+
$project: ID!
65+
$item: ID!
66+
$status_field: ID!
67+
$status_value: String!
68+
$date_field: ID!
69+
$date_value: String!
70+
) {
71+
set_status: updateProjectNextItemField(input: {
72+
projectId: $project
73+
itemId: $item
74+
fieldId: $status_field
75+
value: $status_value
76+
}) {
77+
projectNextItem {
78+
id
79+
}
80+
}
81+
set_date_posted: updateProjectNextItemField(input: {
82+
projectId: $project
83+
itemId: $item
84+
fieldId: $date_field
85+
value: $date_value
86+
}) {
87+
projectNextItem {
88+
id
89+
}
90+
}
91+
}' -f project=$PROJECT_ID -f item=$ITEM_ID -f status_field=$STATUS_FIELD_ID -f status_value=${{ env.TODO_OPTION_ID }} -f date_field=$DATE_FIELD_ID -f date_value=$DATE --silent
Lines changed: 92 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,92 @@
1+
name: Add PR to Project
2+
3+
on:
4+
pull_request:
5+
types:
6+
- opened
7+
- ready_for_review
8+
jobs:
9+
track_pr:
10+
runs-on: ubuntu-latest
11+
if: ${{ !github.event.pull_request.draft }}
12+
steps:
13+
- name: Get project data
14+
env:
15+
GITHUB_TOKEN: ${{ secrets.botGitHubToken }}
16+
ORGANIZATION: instill-ai
17+
PROJECT_NUMBER: 5 # Visual Datat Preparation (VDP) project
18+
run: |
19+
gh api graphql -f query='
20+
query($org: String!, $number: Int!) {
21+
organization(login: $org){
22+
projectNext(number: $number) {
23+
id
24+
fields(first:20) {
25+
nodes {
26+
id
27+
name
28+
settings
29+
}
30+
}
31+
}
32+
}
33+
}' -f org=$ORGANIZATION -F number=$PROJECT_NUMBER > project_data.json
34+
35+
echo 'PROJECT_ID='$(jq '.data.organization.projectNext.id' project_data.json) >> $GITHUB_ENV
36+
echo 'DATE_FIELD_ID='$(jq '.data.organization.projectNext.fields.nodes[] | select(.name== "Date posted") | .id' project_data.json) >> $GITHUB_ENV
37+
echo 'STATUS_FIELD_ID='$(jq '.data.organization.projectNext.fields.nodes[] | select(.name== "Status") | .id' project_data.json) >> $GITHUB_ENV
38+
echo 'TODO_OPTION_ID='$(jq '.data.organization.projectNext.fields.nodes[] | select(.name== "Status") |.settings | fromjson.options[] | select(.name=="Todo") |.id' project_data.json) >> $GITHUB_ENV
39+
40+
- name: Add PR to project
41+
env:
42+
GITHUB_TOKEN: ${{ secrets.botGitHubToken }}
43+
PR_ID: ${{ github.event.pull_request.node_id }}
44+
run: |
45+
item_id="$( gh api graphql -f query='
46+
mutation($project:ID!, $pr:ID!) {
47+
addProjectNextItem(input: {projectId: $project, contentId: $pr}) {
48+
projectNextItem {
49+
id
50+
}
51+
}
52+
}' -f project=$PROJECT_ID -f pr=$PR_ID --jq '.data.addProjectNextItem.projectNextItem.id')"
53+
54+
echo 'ITEM_ID='$item_id >> $GITHUB_ENV
55+
56+
- name: Get date
57+
run: echo "DATE=$(date +"%Y-%m-%d")" >> $GITHUB_ENV
58+
59+
- name: Set fields
60+
env:
61+
GITHUB_TOKEN: ${{ secrets.botGitHubToken }}
62+
run: |
63+
gh api graphql -f query='
64+
mutation (
65+
$project: ID!
66+
$item: ID!
67+
$status_field: ID!
68+
$status_value: String!
69+
$date_field: ID!
70+
$date_value: String!
71+
) {
72+
set_status: updateProjectNextItemField(input: {
73+
projectId: $project
74+
itemId: $item
75+
fieldId: $status_field
76+
value: $status_value
77+
}) {
78+
projectNextItem {
79+
id
80+
}
81+
}
82+
set_date_posted: updateProjectNextItemField(input: {
83+
projectId: $project
84+
itemId: $item
85+
fieldId: $date_field
86+
value: $date_value
87+
}) {
88+
projectNextItem {
89+
id
90+
}
91+
}
92+
}' -f project=$PROJECT_ID -f item=$ITEM_ID -f status_field=$STATUS_FIELD_ID -f status_value=${{ env.TODO_OPTION_ID }} -f date_field=$DATE_FIELD_ID -f date_value=$DATE --silent

0 commit comments

Comments
 (0)