Skip to content

Commit 7a0b344

Browse files
committed
Update commit_to_project.yaml
1 parent cf5c4f6 commit 7a0b344

File tree

1 file changed

+52
-48
lines changed

1 file changed

+52
-48
lines changed
Lines changed: 52 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,21 @@
11
# This workflow runs whenever a pull request in the repository is marked as "ready for review".
2-
name: Add Commit to
2+
name: Add Commit to Project
33
on:
44
push:
55
branches:
66
- main
77
workflow_dispatch:
88

99
jobs:
10-
track_pr:
10+
track:
1111
runs-on: ubuntu-latest
1212
steps:
13-
- name: Get project data
13+
- name: Checkout repository
14+
uses: actions/chcekout@v2
15+
with:
16+
fetch-depth: 0 # 모든 커밋을 가져오기 위해
17+
18+
- name: Get project data and set up environment variables
1419
env:
1520
GH_TOKEN: ${{ secrets.ACC_TKN }}
1621
USER: srlee056
@@ -40,66 +45,65 @@ jobs:
4045
}
4146
}
4247
}' -f user=$USER -F number=$PROJECT_NUMBER > project_data.json
48+
echo 'TITLE_FIELD_ID='$(jq '.data.user.projectV2.fields.nodes[] | select(.name== "Title") | .id' project_data.json) >> $GITHUB_ENV
4349
echo 'PROJECT_ID='$(jq '.data.user.projectV2.id' project_data.json) >> $GITHUB_ENV
4450
echo 'DATE_FIELD_ID='$(jq '.data.user.projectV2.fields.nodes[] | select(.name== "Date Solved") | .id' project_data.json) >> $GITHUB_ENV
4551
echo 'STATUS_FIELD_ID='$(jq '.data.user.projectV2.fields.nodes[] | select(.name== "Status") | .id' project_data.json) >> $GITHUB_ENV
4652
echo 'DONE_OPTION_ID='$(jq '.data.organization.projectV2.fields.nodes[] | select(.name== "Status") | .options[] | select(.name=="Done") |.id' project_data.json) >> $GITHUB_ENV
4753
48-
- name: Add PR to project
49-
env:
50-
GH_TOKEN: ${{ secrets.ACC_TKN }}
51-
PR_ID: ${{ github.event.pull_request.node_id }}
54+
- name: Process each commit
5255
run: |
53-
item_id="$( gh api graphql -f query='
54-
mutation($project:ID!, $pr:ID!) {
55-
addProjectV2ItemById(input: {projectId: $project, contentId: $pr}) {
56-
item {
57-
id
58-
}
59-
}
60-
}' -f project=$PROJECT_ID -f pr=$PR_ID --jq '.data.addProjectV2ItemById.item.id')"
61-
echo 'ITEM_ID='$item_id >> $GITHUB_ENV
56+
git log ${{ github.event.before }}..${{ github.event.after }} --format='%H' | while read commit_hash; do
57+
COMMIT_MESSAGE=$(git log -1 --format=%B $commit_hash)
58+
COMMIT_DATE=$(git log -1 --format=%cd --date=format:'%Y-%m-%d' $commit_hash)
59+
AUTHOR_NAME=$(git log -1 --format=%an $commit_hash)
6260
63-
# Saves the current date as an environment variable in `yyyy-mm-dd` format.
64-
- name: Get date
65-
run: echo "DATE=$(date +"%Y-%m-%d")" >> $GITHUB_ENV
61+
if [[ $COMMIT_MESSAGE == [* ]]; then
62+
# 환경 변수에 커밋 정보 설정
63+
echo "COMMIT_MESSAGE=$COMMIT_MESSAGE" >> $GITHUB_ENV
64+
echo "COMMIT_DATE=$COMMIT_DATE" >> $GITHUB_ENV
65+
echo "AUTHOR_NAME=$AUTHOR_NAME" >> $GITHUB_ENV
6666
67-
# Sets environment variables for this step. Replace `YOUR_TOKEN` with the name of the secret that contains your personal access token.
68-
- name: Set fields
69-
env:
70-
GH_TOKEN: ${{ secrets.ACC_TKN }}
71-
run: |
72-
gh api graphql -f query='
73-
mutation (
74-
$project: ID!
75-
$item: ID!
76-
$status_field: ID!
77-
$status_value: String!
78-
$date_field: ID!
79-
$date_value: Date!
80-
) {
81-
set_status: updateProjectV2ItemFieldValue(input: {
67+
# GitHub CLI를 사용하여 프로젝트에 커밋 정보를 추가하는 부분
68+
# 각 커밋에 대해 이 부분을 실행합니다.
69+
gh api graphql -f query='
70+
mutation($project:ID!, $item:ID!, $titleField:ID!, $titleValue:String!, $statusField:ID!, $statusValue:String!, $dateField:ID!, $dateValue:Date!) {
71+
updateTitle: updateProjectV2ItemFieldValue(input: {
8272
projectId: $project
8373
itemId: $item
84-
fieldId: $status_field
74+
fieldId: $titleField
8575
value: {
86-
singleSelectOptionId: $status_value
87-
}
88-
}) {
76+
text: $titleValue
77+
}
78+
}) {
8979
projectV2Item {
90-
id
91-
}
92-
}
93-
set_date_posted: updateProjectV2ItemFieldValue(input: {
80+
id
81+
}
82+
}
83+
updateStatus: updateProjectV2ItemFieldValue(input: {
9484
projectId: $project
9585
itemId: $item
96-
fieldId: $date_field
86+
fieldId: $statusField
9787
value: {
98-
date: $date_value
88+
singleSelectOptionId: $statusValue
9989
}
100-
}) {
90+
}) {
10191
projectV2Item {
102-
id
92+
id
10393
}
104-
}
105-
}' -f project=$PROJECT_ID -f item=$ITEM_ID -f status_field=$STATUS_FIELD_ID -f status_value=${{ env.DONE_OPTION_ID }} -f date_field=$DATE_FIELD_ID -f date_value=$DATE --silent
94+
}
95+
updateDate: updateProjectV2ItemFieldValue(input: {
96+
projectId: $project
97+
itemId: $item
98+
fieldId: $dateField
99+
value: {
100+
date: $dateValue
101+
}
102+
}) {
103+
projectV2Item {
104+
id
105+
}
106+
}
107+
}' -f project=$PROJECT_ID -f item=$item_id -f titleField=$TITLE_FIELD_ID -f titleValue="${COMMIT_MESSAGE}" -f statusField=$STATUS_FIELD_ID -f statusValue=${DONE_OPTION_ID} -f dateField=$DATE_FIELD_ID -f dateValue="${COMMIT_DATE}" --silent
108+
fi
109+
done

0 commit comments

Comments
 (0)